我想尽可能地编写我的 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/