高效php的寫法分享

來源:互聯網
上載者:User
本文主要和大家分享高效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教程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.