哪个更快?空语句或返回

时间:2010-01-05 21:52:11

标签: php javascript actionscript coldfusion

我一直对此感到好奇。两个代码示例之间哪个处理器效率更高?我知道各种语言可能不同,我需要知道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
}

编辑: 伙计们,你说得对,这可能是完全没必要的,我出于好奇而更多地问这个问题。我已经做了十多年的网络开发,而且几乎都是自学成才。我已经看到很多代码使用了“训练有素的专业人士”的两种方法,并且想知道这是个人偏好还是一群人知道对方没有的东西。

这些也是伪代码示例。我问的是多种语言,细节会略有不同,测试很简单,只是为了确保你知道我在问什么。应该假设这些例子都是函数。

7 个答案:

答案 0 :(得分:13)

如果您在代码中查找性能问题,则。如果您还没有对性能进行基准测试,那么(还)就没有性能问题。

使用最能表达您意图的方法。其他任何东西都是毫无根据的微优化。

更新:假设编写编译器的人比你更聪明(这并非总是如此,但它大部分时间都有效)。编译器将查看您编写的代码,并找出在目标代码中表示的最佳方式(无论是机器代码还是字节码或其他类型的中间表示)。因此,如果您有两个意味着完全相同的代码块,那么编译器在两种情况下都会生成相同的输出很有可能。

答案 1 :(得分:2)

只要在if..else块结束后没有语句,我相信它们在大多数语言中都是相同的。

话虽这么说,我倾向于尽可能少地使用return语句,因为我发现它使我的代码更易读,更容易调试。我怀疑在这种情况下值得花时间关注效率 - 专注于保持代码尽可能干净。

答案 2 :(得分:2)

退出退货的速度更快。

测试此

设置

function a(){if(true) return; else ;}

受测试代码

a();

撕下

输出


跑在0.042321920394897秒0.00018978118896484在


以及

设置

function b(){if(true) ; else ;}

受测试代码

b();

撕下

输出


跑进0.042132139205933秒


经过100,000次重复测试。

答案 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)

http://jsperf.com/empty-statement-vs-return

enter image description here

但实际上,当你每秒达到数千万次执行时,它确实是过早的优化。只是为了减少长循环和过多的DOM操作等事情会更有效。