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

in #php6 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!

Sort:  

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

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

码农的世界,我不懂呀

Posted using Partiko Android

看代码看得头晕晕

跟O哥學習

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

Coin Marketplace

STEEM 0.20
TRX 0.13
JST 0.029
BTC 63343.26
ETH 3484.52
USDT 1.00
SBD 2.53