代码之家  ›  专栏  ›  技术社区  ›  invertedSpear

哪个更快?空语句或返回

  •  2
  • invertedSpear  · 技术社区  · 15 年前

    我一直对此很好奇。在这两个代码示例之间,哪一个更高效的处理器?我知道各种语言可能不同,我需要知道PHP中的答案是什么,但是如果答案不同,我也很好奇javascript、cfscript和actionscript。

    谢谢

    附:这个例子可能不适用于特定的语言,但我相信你会明白的。

    例1:

    if(myVar < 1){
      return;//returned with nothing
    else{
      //do something
    }
    

    例2:

    if(myVar < 1){
      //left blank
    else{
      //do something
    }
    

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

    另外,这些是伪代码示例。我在问多个语言,其中的细节会略有不同,测试是一个简单的测试,以确保您知道我在问什么。应该假设这些例子在一个函数中。

    7 回复  |  直到 14 年前
        1
  •  2
  •   pix0r    15 年前

    只要在 if..else 布洛克,我相信大多数语言都是一样的。

    也就是说,我倾向于少用 return 尽可能多的语句使我的代码更易于阅读和调试。在这种情况下,我怀疑您是否值得花时间关注效率——集中精力保持代码尽可能干净。

        2
  •  13
  •   Greg Hewgill    15 年前

    如果您在代码中查找性能问题,则 它。如果你还没有对你的表现进行基准测试,那么你还没有表现问题。

    使用最能表达你意图的方法。其他任何事情都是毫无根据的微观优化。

    更新 :假设编写编译器的人比您聪明(这并不总是正确的,但大多数情况下都有效)。编译器将查看您编写的代码,并找出在对象代码中表示该代码的最佳方法(无论是机器代码、字节码还是其他类型的中间表示)。所以如果你有两段代码 意思是 完全相同的是,编译器在两种情况下都会生成相同的输出。

        3
  •  2
  •   Don    15 年前

    离开返回速度更快。

    测试这个

    安装程序

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

    被测试代码

    a();
    

    拆下

    输出


    以0.042321920394897秒0.00018978118896484跑完


    而这

    安装程序

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

    正在测试的代码

    b();
    

    拆毁

    产量


    在0.042132132139533秒内跑完


    重复测试100000次。

        4
  •  1
  •   TravisO    15 年前

    我建议使用“返回空值”;但不是因为速度原因,因为您可以确保函数在您期望的时候停止运行。例如,您或其他人可能会修改此函数,在if语句之外添加代码,并且没有意识到代码不应该在某些条件下运行。

    一般来说,迫使事情以你所期望的方式发生是个好主意,不要让它巧合地发生。请注意,我得到的理论比实际更多,但它总是比抱歉更安全。

        5
  •  0
  •   Hazior    15 年前

    取决于代码的这一部分发生了什么,以及最经常发生什么,以便从中获得最大的效率。

        6
  •  0
  •   smcameron    15 年前

    在第一个例子中,您不需要其他的。

    如果编译器很好,那么它们应该等价地编译。

    有时,一组深度嵌套的ifs可以转换为一个未经测试的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都是相当复杂的表达式时,第二种方法可能更容易阅读,从而减少缩进等。

        7
  •  0
  •   Hello71    14 年前

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

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

    enter image description here

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