我认为这可能是过早优化
问题或其他问题。
对于以下两个代码片段,
public void doSomething1(final int a) {
final int b = a -1;
doSomethingElse(b);
doSomethingElse(b);
}
public void doSomething2(final int a) {
doSomethingElse(a - 1);
doSomethingElse(a - 1);
}
doSomething1
是否优于 doSomething2
? doSomething2
使用两个不同的 int
吗?
更新
也许我应该得到反对票。但是我有一个实际的代码,它像这样读取和写入可变长度位(不是字节)。
final int unsignedLength = length - 1;
return (((readBoolean() ? ~0 : 0) << (length - 1))
| readUnsignedInt(length - 1));
我只是好奇用 unsignedLength
改变 (length - 1)
部分。
谢谢。
最佳答案
尝试在这个级别上进行优化通常是完全矫枉过正的,因为它对您的应用程序产生的影响非常小。 doSomething1
应该是更有效的一个,因为它不需要计算 a - 1
两次。然而,这种事情可能会被编译器优化。
不管你应该选择 doSomething1
,因为它更容易维护,即使它有更多的代码,也只有一个地方在计算 a - 1
。这样就不太可能出错。
关于java - 带或不带显式变量的多方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16454411/