哪个更有效:二进制&或逻辑&&

时间:2012-03-20 19:39:16

标签: boolean logical-operators boolean-operations

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

例如

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

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

(特别考虑PHP,但任何语言都会这样做)

3 个答案:

答案 0 :(得分:4)

它操作的位数是无关紧要的:处理器无论如何都可以在一条指令中完成(通常)。关键的区别在于&&的快捷方式,因此对于右侧的任何东西而言,评估它的速度都不是很快 - 假设&&这样的语言就像C或Java一样。 (显然是PHP,虽然我对它的了解很少。)

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

答案 1 :(得分:0)

这取决于代码的逻辑。

答案 2 :(得分:0)

最好使用&&如果&&是合乎逻辑的,并且使用&当&是合乎逻辑的,这就是为什么这些运营商的原因。不要过早优化,因为:

  1. 如果没有优化,您的应用程序的速度可能会很好

  2. 您可以优化应用程序的一部分并赢得无关的速度提升

  3. 您的代码会更复杂,很难在以后的版本上运行

  4. 如果您遇到速度问题,可能与此想法无关

  5. 编程本身很困难,这种黑客攻击会使你的代码无法读取,你的队友也不会理解你的代码,因为你编写的丑陋代码会降低团队的整体效率