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

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时间的很大一部分,那么世界上的所有优化都不会对应用程序的整体性能产生很大影响.

(编辑:李大同)

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

    推荐文章
      热点阅读