【问题标题】:Which is more efficient: binary & or logical &&哪个更有效:二进制和或逻辑 &&
【发布时间】:2012-03-20 19:39:16
【问题描述】:

当所有值都是布尔值时,二进制 & 操作的位数是否比逻辑 && 多?

例如

if ( foo == "Yes" & 2 != 0 & 6 )

if ( foo == "Yes" && 2 != 0 && 6 )

(专门考虑 PHP,但任何语言都可以)

【问题讨论】:

  • 这取决于语言。是的,真的。
  • @SLaks 任何语言的答案都会有所帮助。

标签: boolean logical-operators boolean-operations


【解决方案1】:

它操作多少位无关紧要:处理器无论如何都可以在一条指令中完成它(通常)。关键的区别是&& 的快捷能力,因此对于右侧任何不重要的东西,评估它的速度更快——假设&& 以这种方式工作的语言,如C 或Java。 (显然是 PHP,尽管我对此知之甚少。)

另一方面,这个快捷方式所需的分支也可能会减慢速度,但我很确定现在的编译器足够聪明,可以优化掉它。

【讨论】:

    【解决方案2】:

    这取决于你的代码逻辑。

    【讨论】:

      【解决方案3】:

      如果 && 是合乎逻辑的,最好使用 &&,而当 & 是合乎逻辑的时候,最好使用 &,这就是这些运算符适用的原因。不要过早优化,因为:

      1. 如果不进行优化,您的应用程序的速度可能还不错

      2. 您可能会优化应用程序的一部分,从而获得无关紧要的速度提升

      3. 你的代码会比较复杂,以后的版本会很难用

      4. 如果你有速度方面的问题,它可能与想法无关

      5. 有时编程本身就相当困难,这种hack会让你的代码不可读,你的队友不会理解你的代码,你的代码会因为你编写的丑陋代码而降低团队的整体效率

      【讨论】:

      • 对,但如果&& 以编译器无法补偿的方式变慢,并且已经证明有一次发生是程序中的瓶颈, 用& 替换就可以了。当然还有评论。
      猜你喜欢
      • 2018-05-18
      • 2016-07-19
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      相关资源
      最近更新 更多