加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 编译器会优化重复的数学计算吗?

发布时间:2020-12-14 05:15:05 所属栏目:Java 来源:网络整理
导读:Java Compiler会优化简单的重复数学运算,例如: if (prevX / width != curX / width) { // Do something with prevX / width value} else { // Do something with curX / width value} 我知道我可以在if语句之前将结果分配给变量,并返回变量,但这有点麻烦.如
Java Compiler会优化简单的重复数学运算,例如:
if (prevX / width != curX / width) {
    // Do something with prevX / width value
} else {
    // Do something with curX / width value
}

我知道我可以在if语句之前将结果分配给变量,并返回变量,但这有点麻烦.如果编译器自动识别出正在进行相同的计算并将结果缓存到临时变量,我宁愿坚持上述约定.

*编辑 – 我是个白痴.我试图简单地/抽象地提出我的问题.这并不简单:if(x> y)

解决方法

答案是肯定的.这称为 Common Subexpression Elimination,是Java,C/C++等中使用的标准(强大)编译器优化…

This page确认HotSpot JVM将执行此优化.

也就是说,编译器/运行时是否能够在您预期的情况下进行此优化是另一回事.所以我通常更愿意自己做这些优化,如果它也增强了可读性.

double xw = x / width;
double yw = y / width;

if (xw > yw) {
    return xw;
} else {
    return yw;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读