哪一个更快? if-else语句中有两个fors或if-else语句中有一个for语句?

时间:2018-08-20 18:13:10

标签: algorithm optimization

我不知道该论坛是否是解决此类问题的合适地点,但在这里:

我应该使用哪个进行更多优化?在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
            }       
        }
    }

所以,我知道第二个示例可能看起来像是重复代码,但是重点是,正如我们在第一个示例中看到的那样,计算机将一遍又一遍地对列表的每个项目进行相同的测试,这真的是优化的问题吗?由于在循环内,因此测试布尔值根本不会改变其值。

1 个答案:

答案 0 :(得分:4)

我希望使用第二种结构,因为它可以避免重复测试。

正如其他人所声称的,编译器可能会进行转换。但是您不确定,复制循环语句的成本并不高。