我一直对此感到好奇。两个代码示例之间哪个处理器效率更高?我知道各种语言可能不同,我需要知道PHP中的答案是什么,但如果答案不同,我也对javaScript,CFScript和ActionScript感到好奇。
由于
ps:这个例子可能不是特定语言的精确,但我相信你会明白这一点
示例1:
if(myVar < 1){
return;//returned with nothing
else{
//do something
}
示例2:
if(myVar < 1){
//left blank
else{
//do something
}
编辑: 伙计们,你说得对,这可能是完全没必要的,我出于好奇而更多地问这个问题。我已经做了十多年的网络开发,而且几乎都是自学成才。我已经看到很多代码使用了“训练有素的专业人士”的两种方法,并且想知道这是个人偏好还是一群人知道对方没有的东西。
这些也是伪代码示例。我问的是多种语言,细节会略有不同,测试很简单,只是为了确保你知道我在问什么。应该假设这些例子都是函数。
答案 0 :(得分:13)
如果您在代码中查找性能问题,则不。如果您还没有对性能进行基准测试,那么(还)就没有性能问题。
使用最能表达您意图的方法。其他任何东西都是毫无根据的微优化。
更新:假设编写编译器的人比你更聪明(这并非总是如此,但它大部分时间都有效)。编译器将查看您编写的代码,并找出在目标代码中表示的最佳方式(无论是机器代码还是字节码或其他类型的中间表示)。因此,如果您有两个意味着完全相同的代码块,那么编译器在两种情况下都会生成相同的输出很有可能。
答案 1 :(得分:2)
只要在if..else
块结束后没有语句,我相信它们在大多数语言中都是相同的。
话虽这么说,我倾向于尽可能少地使用return
语句,因为我发现它使我的代码更易读,更容易调试。我怀疑在这种情况下值得花时间关注效率 - 专注于保持代码尽可能干净。
答案 2 :(得分:2)
退出退货的速度更快。
function a(){if(true) return; else ;}
a();
function b(){if(true) ; else ;}
b();
答案 3 :(得分:1)
我建议使用“return null;”但不是出于速度原因,只是因为您可以确定该功能在您预期时也会停止运行。例如,您或其他人可能会修改此函数,在if语句之外添加代码,并且不会意识到代码不应该在某些条件下运行。
强迫事情以你期望的方式发生通常是一个好主意,不要让它巧合。请注意,我得到的理论多于实用性,但它总是比抱歉更安全。
答案 4 :(得分:0)
取决于代码的那部分中发生的事情和最常发生的事情,以便从中获得最高效率。
答案 5 :(得分:0)
在第一个示例中,您不需要else。
如果编译器合适,它们应该等效编译。
有时,一组深度嵌套的ifs可以转换为unsted ifs序列,或者与ANDs连接的ifs可以转换成ifs的直接序列,每个ifs在正面情况下返回。这可以提高可读性。
if (a and b and c and d and e and f)
do_something()
可以转换为:
if (!a) return; if (!b) return; if (!c) return; if (!d) return; if (!e) return; if (!f) return; do_something();
在我的简单示例中,第一种方式可能更容易阅读,但是当a-f各自都是相当复杂的表达式时,第二种方式可以更容易阅读,从而减少缩进等。
答案 6 :(得分:0)