本文主要和大家分享高效php的寫法,希望能協助到大家。
1. 靜態化 static
靜態變數始於類的建立,終於類的消亡;非靜態變數始於類執行個體的建立,終於類執行個體的消亡。靜態方法可以直接調用,執行個體方法要通過執行個體調用,靜態速度會快很多。靜態方法始終調用同一塊記憶體,不能自動進行銷毀,而是執行個體化可以銷毀。
2. echo 效率高於 print
因為echo沒有傳回值,而print返回一個整形。注意,echo大字串的時候,如果沒有做調整就嚴重影響效能。使用開啟apached的mod_deflate進行壓縮或者開啟ob_start先將內容放進緩衝區。
3. 在迴圈之前就設定好迴圈的最大次數,而非在在迴圈中;
如 for 迴圈中每次都計算。
4. 銷毀變數去釋放記憶體,特別是大的數組;
數組和對象在php特別占記憶體的,這個由於php的底層的zend引擎引起的,一般來說,PHP數組的記憶體利用率只有 1/10, 也就是說,一個在C語言裡面100M 記憶體的數組,在PHP裡面就要1G。特別是在PHP作為後台伺服器的系統中,經常會出現記憶體耗費太大的問題。
5. requiere_once()比較耗資源;
這是因為requiere_once需要判斷該檔案是否被引用過,所以能不用盡量不用。常用require/include方法避免。
6. 在includes和requires中使用絕對路徑。
如果包含相對路徑,PHP會在include_path裡面遍曆尋找檔案。用絕對路徑就會避免此類問題,因此解析作業系統路徑所需的時間會更少。
7. 能用PHP內部字串操作函數的情況下,盡量用他們,不要用Regex; 因為其效率高於正則;
str_replace字元替換比正則替換preg_replace快,但strtr比str_replace又快1/4;
另外不要做無謂的替換即使沒有替換,str_replace 也會為其參數分配記憶體。很慢!解決辦法:用 strpos 先尋找(非常快),看是否需要替換,如果需要,再替換。效率:- 如果需要替換:效率幾乎相等,差別在 0.1% 左右。如果不需要替換:用 strpos 快 200%。
8. 最好不用@,用@掩蓋錯誤會降低指令碼運行速度;
用@實際上後台有很多操作。用@比起不用@,效率差距:3 倍。特別不要在迴圈中使用@,在 5 次迴圈的測試中,即使是先用 error_reporting(0) 關掉錯誤,在迴圈完成後再開啟,都比用@快。
9.$row['id']比$row[id]速度快7倍;建議養成數組鍵加引號的習慣;
10.在迴圈裡別用函數
例如For($x=0; $x < count($array); $x), count()函數在外面先計算;
11. 建立一個未聲明的局部變數要比一個已經定義過的局部變數慢9-10倍
12. 單引號代替雙引號來包含字串
13. Apache解析一個PHP指令碼的時間要比解析一個靜態HTML頁面慢2至10倍。
盡量多用靜態HTML頁面,少用指令碼。
14. 不要隨便就複製變數
有時候為了使 PHP 代碼更加整潔,一些 PHP 新手(包括我)會把預定義好的變數複製到一個名字更簡短的變數中,其實這樣做的結果是增加了一倍的記憶體消耗,只會使程式更加慢。
15. 使用選擇分支語句
switch case好於使用多個if,else if語句,並且代碼更加容易閱讀和維護。
16. 盡量的少進行檔案操作,雖然PHP的檔案操作效率也不低的;
在可以用file_get_contents替代file、fopen、feof、fgets
17. 儘可能的使用PHP內建函式
18. foreach效率更高,盡量用foreach代替while和for迴圈;
19. 迴圈內部不要聲明變數,尤其是大變數:對象
20. 對global變數,應該用完就unset()掉;
21. 使用++$i遞增
$i++會比++$i慢一些。這種差異是PHP特有的,,並不適用於其他語言。後置遞增實際上會產生一個臨時變數,這個臨時變數隨後被遞增。而前置遞增直接在原值上遞增。這是最佳化處理的一種,正如Zend的PHP最佳化器所作的那樣。
相關推薦:
6個建立Web應用程式的高效PHP架構
學習PHP精粹,編寫高效PHP代碼之效能_PHP教程
學習PHP精粹,編寫高效PHP代碼之自動化的測試_PHP教程