本文主要跟大家分享高效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內部字串運算函數的情況下,盡量用他們,不要用正則表達式; 因為其效率高於正則;
#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優化器所做的那樣。
相關推薦:
#學習PHP精粹,編寫高效PHP程式碼之自動測試_PHP教程#
以上是高效php的寫法分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!