每天进步一点点:PHP 问号表达式效率问题

in php •  6 years ago 

在写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...并没有多大区别,浪费不了多少时间,倒是我闲的做这个测试,浪费了自己不少时间,够跑无数次问号表达式啦!


Vote For Me As Witness
https://steemit.com/~witnesses type in oflyhigh and click VOTE

Vote @oflyhigh via Steemconnect
Thank you!

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

沒想到是問號寫法跑比較慢...
會不會是因為解析程式碼的時候從左至右,比較晚看到?,還要unstack前面的元素等等所以比較慢呢?

我的想法有点不同,可能是这两种写法被解释后得到的操作指令数量不同,操作指令多的会比操作指令少的运行时间更长一点?

  ·  6 years ago 

码农的世界,我不懂呀

Posted using Partiko Android

看代码看得头晕晕

跟O哥學習

这都能玩一波,厉害厉害!