如果我有一段这样的代码......
if(!hasRunMethod) {
runMethod();
hasRunMethod = true;
}
...并且该代码正在循环中执行,每秒多次,即使内部代码只被调用一次,这是不好的编码实践?如果是这样,我该怎么办呢?
答案 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){}
会对某些性能产生影响。但它是如此微不足道,我发现很难想到一个足够敏感的瓶颈问题。