java - 值比较和值分配之间是否存在任何性能差异?

标签 java performance optimization jvm atomic

<分区>

考虑以下两个代码示例:

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

关于java - 值比较和值分配之间是否存在任何性能差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14176104/

相关文章:

java - 使用 jenkins 执行 .bat 文件

python - 让 cv2.imread 从文件对象或类似内存流的数据中读取图像(这里是非提取的 tar)

android - Android dex 中的冗余操作码

java - 处理 REST 请求以在单独的线程中通过 Hibernate 检索数据

java - 有什么方法可以检测 android 日历 View 中的月份变化(即当用户将日历更改为另一个月份时)

Java:当我开始从kafka主题读取时如何从当前偏移量读取

mysql - 使用 PreparedStatement 从 MySQL 数据库传输数据的开销

iPhone - 获取指向 CGDataProvider 背后数据的指针?

algorithm - 找到最小正值

list - 在什么情况下 F# 中的列表会被编译器优化?