一尘不染

查找3个数字中最小的Java的最有效方法?

algorithm

我有一个用Java编写的算法,希望提高效率。我认为可以提高效率的一部分是找到3个数字中的最小值。目前,我正在使用以下Math.min方法:

double smallest = Math.min(a, Math.min(b, c));

效率如何?用如下的if语句替换会更有效:

double smallest;
if (a <= b && a <= c) {
    smallest = a;
} else if (b <= c && b <= a) {
    smallest = b;
} else {
    smallest = c;
}

或者如果有其他方法更有效

我想知道是否值得更改当前使用的内容?

任何速度的提高都会大有帮助


阅读 217

收藏
2020-07-28

共1个答案

一尘不染

不,这真的 值得更改。摆弄这样的微优化时将要获得的那种改进将是不值得的。如果min调用足够的函数,甚至方法调用成本也将被删除。

如果你有你的算法有问题,最好的办法是寻找到宏观的优化(“大局”的东西一样算法选择或调整) -你一般会得到 很多 更好的性能改善那里。

您关于删除Math.pow带来的改进的评论可能很正确,但这是因为这是一项相对昂贵的操作。Math.min在成本方面甚至都不会接近。

2020-07-28