如果(假)多次执行是不是很糟糕?

时间:2014-08-06 16:56:56

标签: java optimization performance

如果我有一段这样的代码......

if(!hasRunMethod) {
    runMethod();
    hasRunMethod = true;
}

...并且该代码正在循环中执行,每秒多次,即使内部代码只被调用一次,这是不好的编码实践?如果是这样,我该怎么办呢?

1 个答案:

答案 0 :(得分:3)

快速测试(在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){}会对某些性能产生影响。但它是如此微不足道,我发现很难想到一个足够敏感的瓶颈问题。