java – 值比较和值赋值之间是否存在性能差异?
发布时间:2020-12-15 05:10:24 所属栏目:Java 来源:网络整理
导读:请考虑以下两个代码示例: 例1. public void setValue(int value){ mValue = value;} 例2. public void setValue(int value){ if (mValue != value) { mValue = value; }} 假装您的任务是将一些Java代码优化到绝对最大值,超出所有常识. 第二个代码示例是第一
请考虑以下两个代码示例:
例1. public void setValue(int value) { mValue = value; } 例2. public void setValue(int value) { if (mValue != value) { mValue = value; } } 假装您的任务是将一些Java代码优化到绝对最大值,超出所有常识. 第二个代码示例是第一个的优化吗?我的意思是,在最低级别的Java或JVM中if条件检查和int赋值之间是否存在任何差异(无论多么微小)? 解决方法
第二种可能是反优化,因为在现代处理器上,分支往往很昂贵(主要是因为
branch misprediction非常昂贵).
确定的唯一方法是在代表性输入上分析您的代码.有关如何设置有意义的微基准的一些指示,请参见How do I write a correct micro-benchmark in Java?. 请记住,如果相关代码不占整个CPU时间的很大一部分,那么世界上的所有优化都不会对应用程序的整体性能产生很大影响. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |