首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更新min变量: min(a,b) vs. if语句

更新min变量: min(a,b) vs. if语句
EN

Stack Overflow用户
提问于 2015-01-31 20:35:46
回答 2查看 84关注 0票数 1

更好的做法是跟踪列表中的最低值:

代码语言:javascript
运行
复制
int minVal = a[0];
for (int i = 1; i < a.length; i++) {
   minVal =  Math.min(minVal, a[i]);
}

代码语言:javascript
运行
复制
int minVal = a[0];
for (int i = 1; i < a.length; i++) {
   if(a[i] < minVal)
       minVal =  a[i];
}

虽然第一段代码似乎更容易阅读,但第二段代码可能更有效?

课本的方式是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-31 20:40:33

这是Math.min的实现

代码语言:javascript
运行
复制
public static int min(int a, int b) {
    return (a <= b) ? a : b;
}

条件运算符解析成与if语句几乎相同的机器代码;分配给局部变量实际上是免费的,并且无论如何在机器代码级别发生,因为所有中间结果都必须存储在某个地方。

如果您的循环在执行程序时被检测为热点,JIT编译器将把完整的Math.min代码内联到您的循环中。在这一点上,你正在考虑的两种选择几乎没有区别。

然而,最终的判断是衡量您的代码运行情况。如果--而且只有当--您看到了实际的性能问题时,您应该首先使用分析器来查看具体的时间花费在哪里;永远不要相信您的猜测。然后,如果发现这个特定的循环是瓶颈,您可以考虑使用这两个选项进行测试,以确定它是否有任何不同。

票数 3
EN

Stack Overflow用户

发布于 2015-01-31 20:40:04

不要做过早优化。除非这是程序的一条极其关键的路径,否则您应该倾向于代码的可读性和可维护性,而不是假定的性能增益。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28256246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档