如果我有一段这样的代码......
if(!hasRunMethod) {
runMethod();
hasRunMethod = true;
}
...并且该代码在循环中一遍又一遍地执行,每秒多次,即使内部代码只被调用一次,这是一种糟糕的编码习惯吗?如果是这样,我应该怎么做?
最佳答案
快速测试(在 Java 版本 1.8.0_05 上):
long start = System.nanoTime();
int run = 1_000_000;
for(int i = 0; i < run; ++i) {
if(alwaysTrue) {
}
}
long end = System.nanoTime();
end - start
平均约 1,820,000 纳秒。
这个:
long start = System.nanoTime();
int run = 1_000_000;
for(int i = 0; i < run; ++i) {
// if(alwaysTrue) {
//
// }
}
long end = System.nanoTime();
end - start
平均约 1,556,000 纳秒。
作为额外的奖励:
long start = System.nanoTime();
int run = 1_000_000;
for(int i = 0; i < run; ++i) {
if(true) {
}
}
long end = System.nanoTime();
end - start
平均约 1,542,000 纳秒,与注释掉的相同。
结论
循环内的if(someBool){}
对性能有一些影响。但它是如此微不足道,我发现很难想出一个足够敏感的瓶颈来影响它。
关于java - 多次执行 if(false) 不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25165981/