php代碼性能優(yōu)化小技巧

技巧1

不要在循環(huán)體里面通過(guò)count、strlen等函數(shù)對(duì)一個(gè)外部變量進(jìn)行求值,而應(yīng)該在循環(huán)體外部預(yù)先計(jì)算并賦值給新的變量,然后在循環(huán)體內(nèi)部使用時(shí)引用這個(gè)新變量。

這樣做的原因是zend引擎在解釋執(zhí)行php代碼的時(shí)候不會(huì)像其他語(yǔ)言那樣做代碼優(yōu)化,而總是會(huì)按照開(kāi)發(fā)者所書(shū)寫的那樣去執(zhí)行。

例如代碼:

$target = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'];
$flag = true;
for ($i = 0; $i < count($target); $flag && $i++) {
  //
}

其他的預(yù)編譯語(yǔ)言, 它的編譯器也許會(huì)做優(yōu)化, 把count函數(shù)提取到前面去,然后再執(zhí)行循環(huán)。而對(duì)于PHP來(lái)說(shuō)則不會(huì)做這樣的優(yōu)化,那么每一次迭代都會(huì)計(jì)算一次count,帶來(lái)性能上的損耗。

遇到這種情況,我們編寫代碼的時(shí)候,最好將count計(jì)算放到循環(huán)體外部計(jì)算,賦值給一個(gè)新的變量:

$target = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'];
$flag = true;
$targetLen = count($target);
for ($i = 0; $i < $targetLen; $flag && $i++) {
  //
}

參考資料
PHP對(duì)程序員的要求更高

待續(xù)!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容