PHP最佳化小結

來源:互聯網
上載者:User

標籤:

1、echo 比 print 快,並且使用echo的多重參數(指用逗號而不是句點)代替字串串連,比如echo $str1,$str2。如果使用echo $str1.$str2 就會需要 PHP 引擎首先把所有的變數串連起來,然後在輸出,而echo $str1,$str2,PHP 引擎就會按照循序輸出他們 

2、foreach效率更高,盡量用foreach代替while和for迴圈。在執行for迴圈之前確定最大迴圈數,不要每迴圈一次都計算最大值,最好運用foreach代替。(While迴圈比For迴圈執行效率要高出15倍以上,Foreach 迴圈比For迴圈快120倍以上)

3、require_once()代價昂貴。require_once和include_once需要判重,因此效率上要低,但是5.2版本後效率問題已經基本解決。

4、登出那些不用的變數尤其是大數組,以便釋放記憶體。

5、對global變數,應該用完就unset()掉。

6、include檔案時盡量使用絕對路徑,因為它避免了PHP去include_path裡尋找檔案的速度,解析作業系統路徑所需的時間會更少。 (盡量少用iniset()來設定include_path)

7、如果你想知道指令碼開始執行(即伺服器端收到用戶端請求)的時刻,使用$_SERVER[‘REQUEST_TIME‘]要好於time()。 ($_SERVER[‘REQUEST_TIME‘]儲存了發起該請求時刻的時間戳記,而time()則返回當前時刻的Unix時間戳記。  )

8、遞增一個全域變數要比遞增一個局部變數慢2倍。

9、Apache解析一個PHP指令碼的時間要比解析一個靜態HTML頁面慢2至10倍。盡量多用靜態HTML頁面,少用指令碼

10、除非指令碼可以緩衝,否則每次調用時都會重新編譯一次。引入一套PHP緩衝機制通常可以提升25%至100%的效能,以免除編譯開銷,所以盡量做緩衝,可使用memcached。memcached是一款高效能的記憶體對象緩衝系統,可用來加速動態Web應用程式,減輕資料庫負載。對運算碼 (OP code)的緩衝很有用,使得指令碼不必為每個請求做重新編譯。 

11、當操作字串並需要檢驗其長度是否滿足某種要求時,使用strlen()函數執行起來相當快,因為它不做任何計算,只返回在zval 結構(C的內建資料結構,用於儲存PHP變數)中儲存的已知字串長度。但是,由於strlen()是函數,多多少少會有些慢,因為函數調用會經過諸多步驟,如字母小寫化(指函數名小寫化,PHP不區分函數名大小寫)、雜湊尋找,會跟隨被調用的函數一起執行。在某些情況下,你可以使用isset() 技巧加速執行你的代碼,因為與strlen()不同的是,isset()作為一種語言結構,意味著它的執行不需要函數尋找和字母小寫化。也就是說,實際上在檢驗字串長度的頂層代碼中你沒有花太多開銷。

12、當執行變數$i的遞增或遞減時,$i++會比++$i慢一些,這種差異是PHP特有的。++$i更快是因為它只需要3條指令(opcodes),$i++則需要4條指令。後置遞增實際上會產生一個臨時變數,這個臨時變數隨後被遞增。而前置遞增直接在原值上遞增。這是最佳化處理的一種,正如Zend的PHP最佳化器所作的那樣。

13、最佳化Select SQL語句,在可能的情況下盡量少的進行Insert、Update操作

PHP最佳化小結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.