PHP優化小結

2022-08-30 22:27:20 字數 1540 閱讀 6950

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優化及高效提速問題小結

function userloginfo usertemp login userloginfo userdb 比function userloginfo usertemp userloginfo userdb 要高效 urlarray explode http server vars request...

Spfa優化小結

spfa是bellman ford的優化。但是spfa還有優化餘地 一 空間優化,用迴圈佇列 要點 1 判斷隊列為空 只能用if f r if f2 取餘操作 只要加到f r操作的 所有地方就行了 二 簡單而有效的優化slf 如果隊首元素較大,則將新元素插到隊首,否則插到隊尾 slf優化 341.c...

CSS優化小結

一次面試的時候因為簡歷上寫了一句了解css 優化,面試官就問css有哪些地方可以優化,我答了儘量減少選擇器的巢狀和使用樣式繼承,自己後來感覺還有一些可以說的,這裡都列出來,方便以後應對面試。新增注釋,可以是說明一塊樣式是針對頁面哪一部分的,或者是哪個功能,可以是對作用不明顯的樣式或屬性做說明,注釋主...