[英]Difference between Math.min() and if condition
最好的方法是获得最小的数量,哪种方法可以提高性能,或者两者都与性能相同?
一种获取两个数字之间的最小距离的方法:
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);
如果要处理正数,不等于NaN
, -0.0
或0.0
,则应该没有太大的区别。
Java 8中Math.min
源代码的以下内容突出了以下差异:
如果任一值为NaN,则结果为NaN。 与数值比较运算符不同,此方法认为负零严格小于正零。 如果一个参数为正零,另一个为负零,则结果为负零。
所以Math.min
可能会稍微低效率的,因为它会检查NaN
和-0.0
VS 0.0
,但它可以说是更具可读性-你需要首先考虑的特殊情况下是否适用与否,然后可读性VS(非常轻微)之后的性能差异。
我个人将使用Math.min
,但这是我自己的观点。
Java Math#min(double,double)执行以下操作:
NaN
。 看一下来源 :
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
不关心任何这些。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.