如何消滅或優(yōu)化那PHP開(kāi)發(fā)網(wǎng)站程序的代碼呢?
這一點(diǎn)上我個(gè)人最主要的經(jīng)驗(yàn)只有兩點(diǎn),一是消除錯(cuò)誤的或低效的循環(huán);二是優(yōu)化數(shù)據(jù)庫(kù)查詢語(yǔ)句。其實(shí)還存在一些其它的優(yōu)化細(xì)節(jié),比如“str_replace比ereg_replace快”、“echo比print快”等等。這些我暫時(shí)都放在一邊,稍后我會(huì)提到用緩存來(lái)對(duì)付過(guò)于頻繁的IO。
下面我們將三個(gè)功能相同,但程序?qū)懛ú煌暮瘮?shù)的效率(消耗的時(shí)間)進(jìn)行對(duì)比。
CuoXIn.php
以下為引用的內(nèi)容: <?php doBenchmark('v1', $data); function v1($myArray = null) { function v2($myArray = null) { function v3($myArray = null){ ?> |
v1 ran 100 times where average exec time 0.18400 ms
v2 ran 100 times where average exec time 0.15500 ms
v3 ran 100 times where average exec time 0.09100 ms
可以看到,函數(shù)的執(zhí)行時(shí)間變少,效率上升。
函數(shù)v1有個(gè)很明顯的錯(cuò)誤,每一次循環(huán)的時(shí)間,都需要調(diào)用sizeof()函數(shù)來(lái)計(jì)算。 函數(shù)v2則在循環(huán)外把$myArray數(shù)組的元素個(gè)數(shù)存到$max變量中,避免了每次循環(huán)都要計(jì)算數(shù)組的元素個(gè)數(shù),所以效率提高了。函數(shù)v3的效率最高,利用了現(xiàn)成的函數(shù),避免循環(huán)。
這個(gè)例子只是給你一個(gè)感性的認(rèn)識(shí),明白什么是相對(duì)高效的代碼。在實(shí)際開(kāi)發(fā)中,我相信會(huì)有很多人會(huì)迷迷糊糊地寫出很多低效率的代碼。要把代碼寫得精煉而高效,恐怕需要時(shí)間去錘煉:-) 但這是另一個(gè)話題了,我們略過(guò)不談。
數(shù)據(jù)庫(kù)應(yīng)用基本上每個(gè)PHP程序都會(huì)用到,在實(shí)際開(kāi)發(fā)中我發(fā)現(xiàn)最影響整個(gè)系統(tǒng)效率的就是數(shù)據(jù)庫(kù)這部份。至于數(shù)據(jù)庫(kù)的優(yōu)化和數(shù)據(jù)查詢語(yǔ)句的優(yōu)化,在此限于篇幅不詳細(xì)討論。
新聞熱點(diǎn)
疑難解答