PHP中if/else执行机制
如下代码,php中测试是if分支慢2.9秒,else分支快2.2秒,把if条件在1==1和1!=1变换,这是怎么样的机制造成的呢?
$stime=microtime(true); //获取程序开始执行的时间 $j=0; for($i=0;$i<5000000;$i++){ if(1!=1){ $j++; }else $j++; } $etime=microtime(true);//获取程序执行结束的时间 $total=$etime-$stime; //计算差值 $str_total = var_export($total, TRUE); if(substr_count($str_total,"E")){ $float_total = floatval(substr($str_total,5)); $total = $float_total/100000; } echo "$total".'秒';
/*if 0.55976009368896秒 0.55944108963013秒0.56911516189575秒0.5602080821991秒0.56702303886414秒else0.5650839805603秒 0.56633019447327秒0.56741714477539秒0.56370115280151秒0.56349802017212秒*/
[解决办法]
if else执行效率差异只在if代码块和else代码块中代码的执行效率吧?
这里的两块代码是一样的,应该执行时间大致是相同的吧
[解决办法]
是由于花括号产生的,php代码并非我们看上去的这几行,php最终会以C来运行,所以每一个符号每一行,C都要进行转化解释
[解决办法]
这样的问题应该让怪蜀黍来解答...