java - 通过创建新变量来提高性能

标签 java optimization jvm runtime

我想尽可能地编写我的 java 程序,所以我正在减少一切以获得最佳性能......在程序中,一个方法将称为 apprx。 900万次。在那里我必须计算一些东西,只需减去两个整数,这些需要两次。 所以我的问题是,什么更快:用计算结果初始化新整数还是只计算两次值? 例如:

int result = a-b;
methodToCall(result, foo, bla);
otherMethod(result, bla, foo);

methodToCall(a-b, foo, bla);
otherMethod(a-b, bla foo);

我无法直接看到差异,但有时使用第一种方法会更快一些...... 一般来说:第一种方法总是更好吗?例如,当使用其他类型的计算时(更复杂)。 java 编译器或 jvm 是否正在对其进行优化,例如看到我做了两次相同的计算并且只做​​了一次并自己缓存了结果吗?

最佳答案

第一个理论上会更快。

在第二种情况下,JVM不仅会计算两次a-b,还会为两次结果临时分配存储空间,然后再传递给两个方法调用。

我刚刚对这些案例进行了 1 亿次测试,发现它们之间只有 10-15 毫秒的差异,第一个更快。我的测试结果会有所偏差,因为 a 和 b 是常数,但它似乎证实了这个理论。

关于java - 通过创建新变量来提高性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5894629/

相关文章:

Java 插件表颜色 T

java - 为什么 java 允许总是抛出异常的方法将返回类型声明为该异常?

algorithm - 整数二分查找的极致优化

java - import java.util.* 和 java.util.XXXX 之间的区别

java - 什么是对象指向的类属性 - MyClass.class

java - 跟踪 Web 服务器上运行的应用程序的状态

java - 如何组合Switch语句?

C++ 迭代器和循环优化

python - 双循环优化

java - 用于编译代码的 JDK 版本是否重要?