环路中IF的优雅解决方案

Rob*_*bin 2 java optimization performance

最近我写了这样的东西:

public void doSomething(boolean b1, boolean b2){
   while(true){
      if(b1){
         doThis();
      }
      if(b2){
         doThat();
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

但我真的不喜欢这个解决方案,因为在每次迭代中你都要检查2个布尔值.因此,作为可能的解决方案,我可以想象在每个循环之前使用ifs编写4个while循环,但是由于显而易见的原因,这在可维护性方面很糟糕.您有什么建议可以使这段代码变得更好,更有效吗?

Gra*_*ier 15

这看起来像是过早优化.

这是一个心灵陷阱.

在您的申请完成并且正确之前,不要担心这样的细节.然后,如果它不够快,请找一个分析器,看看程序的时间花在哪里.

不要浪费精力去求优化可能不值得注意的事情.

  • 哇.无法相信有人编辑我的答案,将"废话"改为"细节".对不起,如果我冒犯了任何人的微妙感受.我知道我们程序员是贵族的. (2认同)

ass*_*ias 9

从性能的角度来看,因为b1并且b2没有在方法中进行修改,所以分支预测和/或JIT编译极有可能优化测试并且实际条件检查很难(如果有的话)惩罚该方法的性能.

如果没有if(b1)你,if(getB1())那么可能会有更多的改进空间.