PHP性能分析 xhprof

安裝

wget http://pecl.php.net/get/xhprof-0.9.4.tgz

tar zxf xhprof-0.9.4.tgz

//將xhprof-0.9.4下的xhprof_html和xhprof_lib複製到項目目錄下

cd xhprof-0.9.4/extension/

#phpize
./configure --with-php-config=/usr/local/php/bin/php-config
#make
#make install
配置:
[xhprof]
extension=xhprof.so;
; directory used by default implementation of the iXHProfRuns
; interface (namely, the XHProfRuns_Default class) for storing
; XHProf runs.
;
;xhprof.output_dir=<directory_for_storing_xhprof_runs>
;調試信息的保存路徑,建立目錄/tmp/xhprof
xhprof.output_dir=/tmp/xhprof
if(extension_loaded('xhprof'))
{
    xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
}

//PHP Code
//........

if(extension_loaded('xhprof'))
{
    $data = xhprof_disable();   //返回運行數據
    $XHPROF_ROOT = realpath(dirname(__FILE__) .'/..');
    include_once $XHPROF_ROOT."/xhprof_lib/utils/xhprof_lib.php";
    include_once $XHPROF_ROOT."/xhprof_lib/utils/xhprof_runs.php";
    $objXhprofRun = new XHProfRuns_Default();
    $run_id = $objXhprofRun->save_run($data, "xhprof");
    var_dump($run_id);
}

----------------------------------------------------------------------------
會在上面設定的xhprof.output_dir目錄裏生成名字相似49bafaa3a3f66.xhprof_foo的數據文件,
能夠很方便的經過Web方式瀏覽效果:

訪問地址:http://test.cm/xhprof/xhprof_html/index.php?run=49bafaa3a3f66

結果分析主要指標:
Inclusive Time (或子樹時間):包括子函數全部執行時間。
Exclusive Time/Self Time:函數執行自己花費的時間,不包括子樹執行時間。
Wall時間:花去了的時間或掛鐘時間。
CPU時間:用戶耗的時間+內核耗的時間

# 若是xhprof_enable函數寫做:
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY)能夠輸出更多指標。
Function Name 函數名
Calls 調用次數
Calls% 調用百分比

# 消耗時間
Incl. Wall Time (microsec) 調用的包括子函數全部花費時間 以微秒算(一百萬分之一秒)
IWall% 調用的包括子函數全部花費時間的百分比
Excl. Wall Time (microsec) 函數執行自己花費的時間,不包括子樹執行時間,以微秒算(一百萬分之一秒)
EWall% 函數執行自己花費的時間的百分比,不包括子樹執行時間

# 消耗CPU
Incl. CPU(microsecs) 調用的包括子函數全部花費的cpu時間。減Incl. Wall Time即爲等待cpu的時間
ICpu% Incl. CPU(microsecs)的百分比
Excl. CPU(microsec) 函數執行自己花費的cpu時間,不包括子樹執行時間,以微秒算(一百萬分之一秒)。
ECPU% Excl. CPU(microsec)的百分比

# 消耗內存
Incl.MemUse(bytes) 包括子函數執行使用的內存。
IMemUse% Incl.MemUse(bytes)的百分比
Excl.MemUse(bytes) 函數執行自己內存,以字節算
EMemUse% Excl.MemUse(bytes)的百分比

# 消耗內存峯值
Incl.PeakMemUse(bytes) Incl.MemUse的峯值
IPeakMemUse% Incl.PeakMemUse(bytes) 的峯值百分比
Excl.PeakMemUse(bytes) Excl.MemUse的峯值
EPeakMemUse% EMemUse% 峯值百分比
相關文章
相關標籤/搜索