【发布时间】:2011-08-19 04:10:16
【问题描述】:
我想尽可能高效地编写我的 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 是否正在使用它来优化它,例如看到我做了两次相同的计算,只做了一次,然后自己缓存了结果?
【问题讨论】:
-
每当谈到性能时,我通常喜欢清晰的结果(虽然解释也很好),所以我对事物进行基准测试。我建议您以两种方式对调用方法的开始和结束时间进行 5000 次基准测试。比较结果。然后为 10000 执行此操作。到那时,您的答案应该很清楚。我就是这样做的。
-
测量。然后决定。我的预感:太近了,不能打电话。差异可以忽略不计,尤其是 JVM 在优化方面非常聪明。
标签: java optimization jvm runtime