今天某Q群群主突然问了这么一个问题,并发起了一个投票。
从投票结果上看,多数人都认为 if(!$a) 速度更快。
但是当问道为什么这个速度快的时候,大多数人都沉默了。
其实,包括我也沉默了,因为我选 if(!$a) 速度快的原因是:
可以少写几个符号...
如果这题说的写代码速度的话,我估计这就算是结束了。
但是,我突然很想知道,特么到底是哪个运行效率更高。
虽然我猜想也应该是 if(!$a) ,但是程序并不会因为你认为怎样就怎样。
实践出真知,还是马上写了一堆代码,测试了一下,测试结果如图:
其中,测试了三种不同的写法,每次运行一千万次为结果。
从图中看,显而易见,和我们预想的差不多。
确实是 if(!$a) 的效率更高一些。
而效率高的原因,我认为应该是这样:
if ( expr ) 中,是根据条件的 bool 值确定运行方向的。
而 if ( $a == false ) 中,实际上代码运行顺序是
if ( ( $a == false ) == true ) 这样的逻辑来处理的。
而 if ( !$a ) 中,运行代码是
if ( $a != true ) 这样的顺序来执行的。
所以 if(!$a) 实际上是少了一次转换运算,所以效率过略高一筹。
而 至于 为什么 if ( false == $a ) 的效率也比 if ( $a == false )高。
我认为是 因为不同的书写顺序 导致变量在转换类型时不同导致的效率问题。
可能 字符串 转 布尔值 比 布尔值 转 字符串 的效率更高。
也有可能是 字符串之间比较的效率 和 布尔值 之间比较的效率不同。
导致先后顺序不一致,效率也不一致。
当然,这些也只是猜测,我在php官方手册里面找了一圈,也没找到 这方面相关的说法。
所以没办法求证,至于看源代码这事,是我等渣渣可望不可即的事。
总之,事情最后还是有了结果的。
if ( !$a ) 效率最高
if ( false == $a ) 效率其次
if ( $a == false ) 效率更慢
但是,最后我想问一句,谁现在接触过的项目达到了千万次运算级别。
千万次运算,才节省了0.01秒左右的样子。
总时间也才0.3秒左右,所以为了节省这点效率而刻意改变写法意义并不是很大(前提是项目不大)。
但是 if(!$a) 从书写效率上,确实也要更快。
代码也更简洁,按照自己喜欢的风格来就好。
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:duhaomu@163.com,我们将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。
3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明。