用單引號代替雙引號來包含字串,這樣做會更快一些,因為PHP會在雙引號包圍的字串中搜尋變數,單引號則不會(只有echo能這么做),
如果能將類的方法定義成static,就盡量定義成static,它的速度會提升將近4倍,
$row[’id’] ,not $row[id],
echo 比 print 快,并且使用echo的多重引數(譯注:指用逗號而不是句點)代替字串連接,比如echo $str1,$str2,
在執行for回圈之前確定最大回圈數,不要每回圈一次都計算最大值,最好運用foreach代替,
unset那些不用的變數尤其是大陣列,以便釋放記憶體,
盡量避免使用__get,__set,__autoload,
include檔案時盡量使用絕對路徑,因為它避免了PHP去include_path里查找檔案的速度,決議作業系統路徑所需的時間會更少,
如果你想知道腳本開始執行(譯注:即服務器端收到客戶端請求)的時刻,使用$_SERVER[‘REQUEST_TIME’]要好于 time(),
函式代替正則運算式完成相同功能,
str_replace函式比preg_replace函式快,但strtr函式的效率是str_replace函式的四倍,
使用選擇分支陳述句(譯注:即switch case)好于使用多個if,else if陳述句,
用@屏蔽錯誤訊息的做法非常低效,極其低效,
打開apache的mod_deflate模塊,可以提高網頁的瀏覽速度,
資料庫連接當使用完畢時應關掉,不要用長連接,
派生類中的方法運行起來要快于在基類中定義的同樣的方法,
Apache決議一個PHP腳本的時間要比決議一個靜態HTML頁面慢2至10倍,盡量多用靜態HTML頁面,少用腳本,
除非腳本可以快取,否則每次呼叫時都會重新編譯一次,引入一套PHP快取機制通常可以提升25%至100%的性能,以免除編譯開銷,
當操作字串并需要檢驗其長度是否滿足某種要求時,你想當然地會使用strlen()函式,
此函式執行起來相當快,因為它不做任何計算,只返 回在zval 結構(C的內置資料結構,用于存盤PHP變數)中存盤的已知字串長度,
但是,由于strlen()是函式,多多少少會有些慢,因為函式呼叫會經過諸多步 驟,如字母小寫化(譯注:指函式名小寫化,PHP不區分函式名大小寫)、哈希查找,會跟隨被呼叫的函式一起執行,
在某些情況下,你可以使用isset() 技巧加速執行你的代碼,
(舉例如下)
if (strlen($foo) < 5) { echo “Foo is too short”$$ }
(與下面的技巧做比較)
if (!isset($foo{5})) { echo “Foo is too short”$$ }
呼叫isset()恰巧比strlen()快,因為與后者不同的是,isset()作為一種語言結構,意味著它的執行不需要函式查找和字母小寫化,也就是說,實際上在檢驗字串長度的頂層代碼中你沒有花太多開銷,
當執行變數$i的遞增或遞減時,$i++會比++$i慢一些,
這種差異是PHP特有的,并不適用于其他語言,
++$i更快是因為它只需要3條指令(opcodes),$i++則需要4條指令,
后置遞增實際上會產生一個臨時變數,這個臨時變數隨后被遞增,而前置遞增直接在原值上遞增,
盡量采用PHP內置函式,
評估檢驗你的代碼,Xdebug除錯器包含了檢驗程式,總體上可以顯示出代碼的瓶頸,
mod_zip可作為Apache模塊,用來即時壓縮你的資料,并可讓資料傳輸量降低80%,
在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情況下,盡量用 file_get_contents,因為他的效率高得多!但是要注意file_get_contents在打開一個URL檔案時候的PHP版本問題;
回圈內部不要宣告變數,尤其是大變數:物件,多維陣列盡量不要回圈嵌套賦值,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/189844.html
標籤:PHP
