当所有值都是布尔值时,二进制&
的位数是否比逻辑&&
更多?
例如
if ( foo == "Yes" & 2 != 0 & 6 )
或
if ( foo == "Yes" && 2 != 0 && 6 )
(特别考虑PHP,但任何语言都会这样做)
答案 0 :(得分:4)
它操作的位数是无关紧要的:处理器无论如何都可以在一条指令中完成(通常)。关键的区别在于&&
的快捷方式,因此对于右侧的任何东西而言,评估它的速度都不是很快 - 假设&&
这样的语言就像C或Java一样。 (显然是PHP,虽然我对它的了解很少。)
另一方面,这个快捷方式所需的分支也可能会减慢速度,但是我现在很确定'编译器足够聪明,可以优化它。
答案 1 :(得分:0)
这取决于代码的逻辑。
答案 2 :(得分:0)
最好使用&&如果&&是合乎逻辑的,并且使用&当&是合乎逻辑的,这就是为什么这些运营商的原因。不要过早优化,因为:
如果没有优化,您的应用程序的速度可能会很好
您可以优化应用程序的一部分并赢得无关的速度提升
您的代码会更复杂,很难在以后的版本上运行
如果您遇到速度问题,可能与此想法无关
编程本身很困难,这种黑客攻击会使你的代码无法读取,你的队友也不会理解你的代码,因为你编写的丑陋代码会降低团队的整体效率