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

在PHP中,速度更快($x>=3)或($x>2)

  •  0
  • Toby  · 技术社区  · 14 年前

    不管是哪种方式,这都是一个很小的节省,但它在办公室引发了一场小辩论,我想就此获得其他反馈。

    假设$x的整数值更有效;

    ($x >= 3) 
    

    ($x > 2)
    

    编辑

    我回滚了一个措辞更改,因为我们讨论的一个因素是,有些人认为>=更易于立即阅读,并且认为对于int值>2没有意义,因为您的意思是>=3。这不会使脚本更快,但在维护脚本方面可能更有效。(在人们解释这是多么微不足道之前)

    5 回复  |  直到 14 年前
        1
  •  12
  •   Alex Howansky    14 年前

    在我的测试机器(PHP5.3.3)上,我运行了5次,每次迭代1000万次,并平均了结果。”$x>2“耗时5.7357秒,“$x>=3”耗时5.8654秒。注意,这不包括编译时间,因为这些迭代只进行一次编译。因此“$x>2”更快,但几乎没有。我不明白为什么,但你去了。

        2
  •  5
  •   The Archetypal Paul    14 年前

    我无法想象操作本身在执行时间上会有什么不同。但是,对于第一个字符,会有非常小的时间增加,因为lexer/parser必须处理一个完整的额外字符。

    绝对不值得担心

        3
  •  2
  •   Andy Lester    14 年前

    经验证据会告诉你的。运行自己的基准测试,而不是跑到互联网上让别人给你答案。

        4
  •  0
  •   Armen Tsirunyan    14 年前

    A very minor saving

        5
  •  0
  •   johannes    11 年前

    在您的例子中,PHP将交换操作数,然后运行较小或较小或相等的比较。如果你看看 is_smaller_function is_smaller_or_equal_functionion http://lxr.php.net/xref/PHP_TRUNK/Zend/zend_operators.c#1714

    在这里你可以看到唯一的区别是最后一行的运算符

    ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
    

    ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
    

    所以答案取决于C编译器,它是否能以不同的方式优化这些操作中的任何一个,以及CPU。