PHP代碼優(yōu)化的建議
1、當(dāng)你需要時(shí),你總能把代碼分解成方法。
2、盡量采用大量的PHP內(nèi)置函數(shù)。
3、如果在代碼中存在大量耗時(shí)的函數(shù),你可以考慮用C擴(kuò)展的方式實(shí)現(xiàn)它們。
4、在執(zhí)行for循環(huán)之前確定最大循環(huán)數(shù),不要每循環(huán)一次都計(jì)算最大值,最好運(yùn)用foreach代替。
5、注銷(xiāo)那些不用的變量尤其是大數(shù)組,以便釋放內(nèi)存。
6、盡量避免使用__get,__set,__autoload。
7、require_once()代價(jià)昂貴。
8、include文件時(shí)盡量使用絕對(duì)路徑,因?yàn)樗苊饬薖HP去include_path里查找文件的速度,解析操作系統(tǒng)路徑所需的時(shí)間會(huì)更少。
9、如果你想知道腳本開(kāi)始執(zhí)行(譯注:即服務(wù)器端收到客戶端請(qǐng)求)的時(shí)刻,使用$_SERVER[‘REQUEST_TIME']要好于time()。
10、函數(shù)代替正則表達(dá)式完成相同功能。
11、str_replace函數(shù)比preg_replace函數(shù)快,但strtr函數(shù)的效率是str_replace函數(shù)的四倍。
12、如果一個(gè)字符串替換函數(shù),可接受數(shù)組或字符作為參數(shù),并且參數(shù)長(zhǎng)度不太長(zhǎng),那么可以考慮額外寫(xiě)一段替換代碼,使得每次傳遞參數(shù)是一個(gè)字符,而不是只寫(xiě)一行代碼接受數(shù)組作為查詢和替換的參數(shù)。
13、使用選擇分支語(yǔ)句(譯注:即switch case)好于使用多個(gè)if,else if語(yǔ)句。
14、用@屏蔽錯(cuò)誤消息的做法非常低效,極其低效。
15、打開(kāi)apache的mod_deflate模塊,可以提高網(wǎng)頁(yè)的瀏覽速度。
16、數(shù)據(jù)庫(kù)連接當(dāng)使用完畢時(shí)應(yīng)關(guān)掉,不要用長(zhǎng)連接。
17、錯(cuò)誤消息代價(jià)昂貴。
18、在方法中遞增局部變量,速度是最快的。幾乎與在函數(shù)中調(diào)用局部變量的速度相當(dāng)。
19、遞增一個(gè)全局變量要比遞增一個(gè)局部變量慢2倍。
20、遞增一個(gè)對(duì)象屬性(如:$this->prop++)要比遞增一個(gè)局部變量慢3倍。
21、遞增一個(gè)未預(yù)定義的局部變量要比遞增一個(gè)預(yù)定義的局部變量慢9至10倍。合肥網(wǎng)絡(luò)建設(shè)公司
22、僅定義一個(gè)局部變量而沒(méi)在函數(shù)中調(diào)用它,同樣會(huì)減慢速度(其程度相當(dāng)于遞增一個(gè)局部變量)。PHP大概會(huì)檢查看是否存在全局變量。
23、方法調(diào)用看來(lái)與類(lèi)中定義的方法的數(shù)量無(wú)關(guān),因?yàn)槲?在測(cè)試方法之前和之后都)添加了10個(gè)方法,但性能上沒(méi)有變化。
24、派生類(lèi)中的方法運(yùn)行起來(lái)要快于在基類(lèi)中定義的同樣的方法。
25、調(diào)用帶有一個(gè)參數(shù)的空函數(shù),其花費(fèi)的時(shí)間相當(dāng)于執(zhí)行7至8次的局部變量遞增操作。類(lèi)似的方法調(diào)用所花費(fèi)的時(shí)間接近于15次的局部變量遞增操作。
26、Apache解析一個(gè)PHP腳本的時(shí)間要比解析一個(gè)靜態(tài)HTML頁(yè)面慢2至10倍。盡量多用靜態(tài)HTML頁(yè)面,少用腳本。