java - 多次执行 if(false) 不好吗?

标签 java optimization performance

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

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/

相关文章:

python - 在 python 中优化均值

linux - 需要考虑在 Linux 上使用 C 语言分析多线程

javascript - 在 javascript 中使用 instanceof 运算符是性能问题吗?

java - 将初始 Perm 大小和最大 Perm 大小设置为相同以防止 Full GC

java - Hibernate 命名查询或 SQL Server 存储过程

java - 房间数据库 - 外键约束失败错误代码 787

iphone - 如何解决 UITableView 滚动慢的问题

JavaFX setGraphic() 不在 MenuItem 中显示图标

javascript - 从函数调用返回值时,最新的 JavaScript/ECMAScript 编译器是否会优化不必要的变量赋值?

python - 素性测试比暴力法花费的时间更长,我该如何改进?