Vis*_*hal 3 java loops conditional-statements
如果"flag"为真,我必须执行步骤号.1否则跳过它.有没有办法在循环中跳过这种不必要的重复检查.(因为执行循环时flag的值没有改变)
private void method(boolean flag) {
while (man > woman) {
if (flag) {
// Step no. 1
System.out.println(flag);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Dig*_*oss 10
我不确定担心这个级别的优化是否有效.通常,让程序工作并继续处理下一个问题更为重要.
话虽如此,有一个称为循环非开关的优化,一些编译器会为你做.它们复制循环,一次使用,一次没有条件,并向外移动条件以选择循环.(在你的例子中,你可以使整个循环有条件,但我认为这只是Stack Overflow简化的一个工件.)
但这只是不要过于担心优化的另一个原因,至少,直到你有一个配置文件并且你知道这个代码区域负责可检测的运行时数.
尽管如此,最好尽可能干净地编写代码,并且通过这样的问题解决问题会教会你好的东西......
事实上,循环不变条件也困扰我.我不相信有一个普遍的答案.有一些奇特的答案涉及更高阶函数或lambdas,"留下编译器"的答案,重构 - 整个外部例程的答案......我通常会赞同使代码看起来更小的任何东西.你必须优先考虑以区别对待......