我不知道该论坛是否是解决此类问题的合适地点,但在这里:
我应该使用哪个进行更多优化?在for
内包含if-else语句的单个for
语句还是两个if-else
语句?
例如,假设项目是一个巨大的list
:
void doSomething(List items, boolean test)
{
for(item : items) {
if (test) {
// do A statements
} else {
// do B statements
}
}
}
第二个例子:
void doSomething(List items, boolean test)
{
if (test) {
for (item : items) {
// do A statements
}
} else {
for (item : items) {
// do B statements
}
}
}
所以,我知道第二个示例可能看起来像是重复代码,但是重点是,正如我们在第一个示例中看到的那样,计算机将一遍又一遍地对列表的每个项目进行相同的测试,这真的是优化的问题吗?由于在循环内,因此测试布尔值根本不会改变其值。
答案 0 :(得分:4)
我希望使用第二种结构,因为它可以避免重复测试。
正如其他人所声称的,编译器可能会进行转换。但是您不确定,复制循环语句的成本并不高。