學習PHP精粹,編寫高效PHP代碼之效能

來源:互聯網
上載者:User

標籤:c   style   class   blog   code   java   

一、採用基準測試,檢測代碼的效能

基準測試涉及Web應用程式時,通常指“壓力測試”,即在你的代碼中儘可能多地載入流量,然後衡量它的執行能力。

推薦兩種基準測試的工具:ApacheBench(ab)和JMeter。

要進行壓力測試,我們需要兩個東西:同時線上的使用者和大量的請求。使用這些工具後,很多同時啟動並執行應用程式線程便代表了使用者。因此我們只需記住:並發線程=並發使用者。

1、ApacheBench超級簡單,通常包含了Apache安裝,或是作為Apache開發包的一部分——一個被稱為簡單ab的二進位檔案。要使用ab,只需指定請求的總數(-n),以及並發線程的數量(-c),然後讓它開始工作。

例如:我們在這裡使用-n 1000 -c 20產生20個並發線程執行1000個請求。

$ ab -n 1000 -c 20 http://example.org/

ab使用參考:http://httpd.apache.org/docs/2.0/programs/ab.html

2、JMeter是另一個具備GUI的Apache項目,而且具備更多功能。若要使用JMeter,你需要建立一個測試計劃,添加線程組、添加採樣器、指定JMeter的配置、添加Cookie處理器這樣的其他選項、增加監聽器處理結果。

JMeter網站:http://jmeter.apache.org/

二、利用緩衝提高代碼效能

1、對於Apache伺服器,利用apc實現代碼緩衝。

從PECL(PHP Extension Community Library,PHP擴充共用類庫)中擷取APC進行編譯,然後安裝該擴充。

$ pecl install apc

在這之後,根據設定,需要編輯php.ini檔案並添加它:

extension = apc.so

重新啟動Apache,然後就可以了。

apc使用參考:http://www.php.net/manual/en/book.apc.php

2、對於Windows/IIS伺服器,利用微軟的WinCache實現代碼緩衝。

WinCache網站:http://www.iis.net/downloads/microsoft/wincache-extension

3、利用memcached實現會話資料緩衝,memcached是基於記憶體的、群集友好的鍵/值對儲存。如果你啟用memcached擴充,就可以自動使用memcached代替磁碟儲存回話。

memcached網站:http://memcached.org/

memcached使用參考:http://www.php.net/manual/zh/book.memcached.php

安裝memcached:

$ pecl install memcache # Install ext/memcache$ memcached -d -m 128 # Start memcached

 

設定php.ini:

session.save_handler = ‘memcache‘session.save_path = ‘tcp://localhost:11211‘

 

三、進行程式概要分析,尋找問題在哪裡?

程式概要分析(profiling)是採用精確的時間或記憶體檢測代碼運行每個動作的行為。通過分析,找到問題的位置,然後進行最佳化。

我們有兩個常用的profiling工具:

1、由Derick Rethans編寫的可靠的Xdebug工具,並由KCachegrind或QCachegrind審核結果。

Xdebug網站:http://xdebug.org/

KCachegrind網站:http://sourceforge.jp/projects/freshmeat_kcachegrind/releases/

QCachegrind網站:http://sourceforge.jp/projects/freshmeat_kcachegrind/releases/

2、新開發的XHProf工具,是來自Facebook的一個應用,由Paul Reinheimer編寫XHGui Web前段部分。

XHProf網站:http://pecl.php.net/package/xhprof

XHGui網站:https://github.com/perftools/xhgui

 

總結:

首先我們要解決效能下降這個最大的難題,這樣便可獲得整體效能的更好提升。如果一個SQL查詢花費10秒,而你將它的執行速度提高了50%,這樣你為自己節省了5秒;然而,如果執行一個PHP函數花費5秒,你同樣將它的執行速度提高了50%,你實際上卻只節省了半秒鐘。在某些時候,你將受到硬體效能的絕對限制,以我們的經驗你更有可能受到磁碟或網路I/O的限制,而不是CPU或RAM的限制。這時你需要開始在多台電腦上縮放應用程式。

聯繫我們

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