获得最小数量的最佳方式是什么,哪种方式提高了性能,或者两者都与性能方面相同?
获得两个数字之间的最小距离的一种方法:
double minDistance = Double.MAX_VALUE;
double distance = coordinate1.distnaceTo(coordinate2);
if(distnace < minDistance ) {
minDistance = distance;
}
获得两个数字之间的最小距离的另一种方法:
double minDistance = Double.MAX_VALUE;
double minDistance = Math.min(coordinate1.distnaceTo(coordinate2), minDistance);
答案 0 :(得分:4)
如果您处理的是正数,不等于NaN
,-0.0
或0.0
,那么应该没有太大区别。
Java 8中的Math.min
源代码中的以下内容强调了以下差异:
如果任一值为NaN,则结果为NaN。与数值比较运算符不同,此方法将负零视为 严格小于正零。如果一个参数为正零 另一个是负零,结果是负零。
所以Math.min
可能稍微效率低,因为它会检查NaN
和-0.0
vs 0.0
,但它可以说更具可读性 - 您需要首先考虑特殊情况是否适用,然后再考虑可读性与(之后如此轻微)性能差异。
我个人会使用Math.min
,但那是我自己的意见。
答案 1 :(得分:1)
Java Math#min(double, double)执行以下操作:
NaN
。查看source:
public static double min(double a, double b) {
if (a != a) return a; // a is NaN
if ((a == 0.0d) && (b == 0.0d) && (Double.doubleToLongBits(b) == negativeZeroDoubleBits)) {
return b;
}
return (a <= b) ? a : b;
}
以下是您的实施:
if(distnace < minDistance ) {
....
}
所以,是的,你的代码比Math.min()
更快,因为它会检查一些额外条件,NaN
,零或否定性而你的if-else
并不关心任何这些。