首頁 > 後端開發 > php教程 > 高效php的寫法分享

高效php的寫法分享

小云云
發布: 2023-03-21 13:44:01
原創
1508 人瀏覽過

本文主要跟大家分享高效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優化器所做的那樣。

相關推薦:

6個建立Web應用程式的高效PHP框架

#學習PHP精粹,編寫高效PHP程式碼之性能_PHP教程

#學習PHP精粹,編寫高效PHP程式碼之自動測試_PHP教程#

以上是高效php的寫法分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板