Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 中频环路处理效率_Java_Performance - Fatal编程技术网

Java 中频环路处理效率

Java 中频环路处理效率,java,performance,Java,Performance,从处理或优化的角度来看,这两个选项中哪一个更好 我觉得选项1更具可读性,但有人告诉我,选项2更有效。是这样吗 if (value != null) { if (value.equalsIgnoreCase(ApplicationConstants.A)) { } else if (value.equalsIgnoreCase(ApplicationConstants.B)) { } } 备选案文2: if ((value != null) && (val

从处理或优化的角度来看,这两个选项中哪一个更好

我觉得选项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))) {

}

我希望第一种方法的效率稍微高一点,因为
&&
是短路的,所以它无论如何都会给出多个条件分支。但是如果你想确定的话,就给它们计时。

选项1
是有效的,因为没有多余的
null
检查。

我会选择选项1,就像在选项2中一样,不会进行更多的比较。

这里没有任何关于性能的问题,编写代码以使其尽可能可读

当以后的性能测试突出显示需要优化的领域时,然后只优化需要优化的地方

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

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

第一个选项更好,因为您可以通过一个条件检查来决定。 因此,如果值!=空,则只有它将进入,否则它甚至不会进入条件块。
但在第二个选项中,它将检查if条件,如果为false,它还将检查其他条件(for value==null)。

谢天谢地,ifnonnull有自己的JVM操作码,因此比较便宜。是的,正如Thomas指出的,没有所谓的if循环,循环是for,while,do-while,for-each和for-in…+1同意,这里的差异非常小,几乎100%的时候都无关紧要。优化可读性。我甚至打赌在热点优化器运行后可能不会有任何区别。