PHP中if($a==false)和if(!$a)哪种写法速度更快?

今天某Q群群主突然问了这么一个问题,并发起了一个投票。

从投票结果上看,多数人都认为 if(!$a) 速度更快。

但是当问道为什么这个速度快的时候,大多数人都沉默了。

其实,包括我也沉默了,因为我选 if(!$a) 速度快的原因是:

可以少写几个符号...

如果这题说的写代码速度的话,我估计这就算是结束了。

但是,我突然很想知道,特么到底是哪个运行效率更高。

虽然我猜想也应该是 if(!$a) ,但是程序并不会因为你认为怎样就怎样。

实践出真知,还是马上写了一堆代码,测试了一下,测试结果如图:

PHP中if($a==false)和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.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明

给TA赞赏
共{{data.count}}人
人已赞赏
未整理

室内手绘入门教程视频课程

2021-3-25 0:00:00

未整理

私域流量如何引流?私域流量实战营,7 天收获属于您的私域流量池

2021-3-27 0:00:00

0 条回复 A文章作者 M管理员
----《》
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索