我有一个用 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;
}
或者如果任何其他方式更有效
我想知道是否值得改变我目前使用的东西?
任何速度提高都会有很大帮助
原文由 Chris 发布,翻译遵循 CC BY-SA 4.0 许可协议
不,这真的 不 值得改变。在摆弄像这样的微优化时,您将获得的那种改进是不值得的。如果
min
函数被调用足够多,即使是方法调用成本也会被移除。如果您的算法有问题,最好的办法是研究宏观优化(“全局”的东西,如算法选择或调整)——通常会在那里获得 更好的 性能改进。
您的评论认为删除
Math.pow
进行了改进可能是正确的,但那是因为这是一项相对昂贵的操作。Math.min
在成本方面甚至不会接近。