在写PHP代码时,遇到简单的判断之类的,总是喜欢用问号表达式而不是IF...ELSE...分支判断。
(图源 :pixabay)
今天突发奇想,问号表达式和IF...ELSE...到底谁的效率高呢?然后百度了一下,咦,竟然没人讨论这个问题,看来就我自己闲的难受。
既然闲的难受就写段简单的代码测试一下
<?
$loops = 100000;
$start=microtime(true);
for($i=0; $i<$loops; $i++)
{
($i>$i-1)?$j=0:$j=1;
($i<$i+1)?$k=0:$k=1;
($i>$i-1)?$j=0:$j=1;
($i<$i+1)?$k=0:$k=1;
}
echo round(microtime(true) - $start, 6), "\n";
$start = microtime(true);
for($i=0; $i<$loops; $i++)
{
if($i>$i-1) $j=0; else $j=1;
if($i<$i+1) $k=0; else $k=1;
if($i>$i-1) $j=0; else $j=1;
if($i<$i+1) $k=0; else $k=1;
}
echo round(microtime(true) - $start, 6), "\n";
?>
刷了几遍网页后,输出的结果大致都是类似如下情况
也就是说问号表达式要比IF...ELSE..慢上一倍左右,不过,讲真,运行10万轮,每轮还运行了四次,不过耗时接近0.04秒,也就是说其实这点效率差异根本是无关紧要的。
所以,用问号表达式还是IF...ELSE...并没有多大区别,浪费不了多少时间,倒是我闲的做这个测试,浪费了自己不少时间,够跑无数次问号表达式啦!
https://steemit.com/~witnesses type in
oflyhigh
and click VOTE
Vote @oflyhigh via Steemconnect
Thank you!
沒想到是問號寫法跑比較慢...
會不會是因為解析程式碼的時候從左至右,比較晚看到
?
,還要unstack前面的元素等等所以比較慢呢?Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
我的想法有点不同,可能是这两种写法被解释后得到的操作指令数量不同,操作指令多的会比操作指令少的运行时间更长一点?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
码农的世界,我不懂呀
Posted using Partiko Android
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
看代码看得头晕晕
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
跟O哥學習
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
这都能玩一波,厉害厉害!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit