如果循环处理效率

时间:2011-05-04 05:12:56

标签: java performance

从处理或优化的角度来看,哪2个更好?

我觉得选项1更具可读性,但我被告知选项2更有效率。是这样吗?

if (value != null) {
    if (value.equalsIgnoreCase(ApplicationConstants.A)) {
    } else if (value.equalsIgnoreCase(ApplicationConstants.B)) {
    }
}

选项2:

if ((value != null) && (value.equalsIgnoreCase(ApplicationConstants.A))) {

} else if ((value != null) && (value.equalsIgnoreCase(ApplicationConstants.B))) {

}

5 个答案:

答案 0 :(得分:8)

这里没有什么可以关心性能,编写代码使其具有可读性。

当性能测试稍后突出显示需要优化的区域时,只会优化需要它的位置。

为了使其更具可读性,您可以反转您的测试以摆脱空检查:

if (ApplicationConstants.A.equalsIgnoreCase(value)) {
} else if (ApplicationConstants.B.equalsIgnoreCase(value)) {
}

答案 1 :(得分:2)

Option 1效率很高,因为没有多余的null支票。

答案 2 :(得分:0)

我希望第一个更有效率,因为&&是短路的,所以无论如何它都会提供多个条件分支。但是,如果你想确定,请计算时间。

答案 3 :(得分:0)

我会选择选项1,如同选项2一样,更多的是没有进行比较。

答案 4 :(得分:0)

第一个选项更好,因为您可以决定一个条件检查。 所以如果value!= null则只有它会进入else,它甚至不会进入条件块。 但在第二个选项中,它将检查条件是否为false,如果为false,则检查其他条件(对于值== null)。