溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php性能分析工具xhprof的安裝使用

發(fā)布時間:2020-07-02 06:22:08 來源:網(wǎng)絡(luò) 閱讀:413 作者:chapterlin 欄目:web開發(fā)

早就聽說了xhprof這款由facebook開源的php性能分析工具了,只是一直沒有使用過,因為工作中從來沒有對代碼進(jìn)行過性能分析.目前項目的代碼中集成了xhprof,所以最近抽空下載,安裝試用了下.特此記錄.


要想讓xhprof能夠正常運行,需要安裝以下擴展.

1,libpng提供給graphviz試用,yum自帶

2.graphviz,xhprof需要用它繪圖,需要自己下載 wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz

3.xhprof


在編譯安裝xhprof過程中,出現(xiàn)了error 1的bug,導(dǎo)致make錯誤.安裝失敗

最后更換了xhprof的版本才通過


xhprof文件中有兩個重要的文件目錄:

1,xhprof_html,這個目錄中有個docs目錄,里面有關(guān)于xhprof的文檔.另外xhprof的分析結(jié)果文件需要使用xhprof_html中的index.php文件進(jìn)行結(jié)果顯示

2,xhprof_lib,這個目錄就是代碼中需要引入的文件

這兩個目錄都要放到站點下面.xhprof_html可以放到單獨的站點下,這樣就可以通過獨立的域名查看分析結(jié)果

3.examples,這個目錄下的sample.php是個測試文件


編譯安裝xhprof之后需要在php.ini中對此擴展進(jìn)行設(shè)置

extension=xhprof.so

xhprof.output_dir=/www/logs/xhprof ,這里指定xhprof生成的分析結(jié)果文件,此目錄要實現(xiàn)建立,并需要有寫權(quán)限


編寫測試代碼:

<?php
function bar($x) {
  if ($x > 0) {
    bar($x - 1);
  }
}
function foo() {
  for ($idx = 0; $idx < 2; $idx++) {
    bar($idx);
    $x = strlen("abc");
  }
}
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);   //代碼的開頭指定
//xhprof_enable(XHPROF_FLAGS_NO_BUILTINS); 不記錄內(nèi)置的函數(shù)  
//xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);  同時分析CPU和Mem的開銷  
foo();  //需要測試的代碼
 
$xhprof_data = xhprof_disable();  
include_once "xhprof_lib/utils/xhprof_lib.php";   
include_once "xhprof_lib/utils/xhprof_runs.php";   
$xhprof_runs = new XHProfRuns_Default();   
$run_id = $xhprof_runs->save_run($xhprof_data, "hx"); //$run_id.hx.xhprof就是生成的分析結(jié)果文件,寫入到xhprof.output_dir目錄中,'hx'在文檔中稱為namespace   
$url = $xhprof_root."/xhprof_html/index.php?run=$run_id&source=hx"; //$xhprof_root就是訪問xhprof_html的域名
echo ''.$url.'';


在瀏覽器中打開此$url就能看到分析結(jié)果了

php性能分析工具xhprof的安裝使用


Function Name 函數(shù)名  

Calls 調(diào)用次數(shù)  

Calls% 調(diào)用百分比  

Incl. Wall Time (microsec) 調(diào)用的包括子函數(shù)所有花費時間 以微秒算(一百萬分之一秒)  

IWall% 調(diào)用的包括子函數(shù)所有花費時間的百分比  

Excl. Wall Time (microsec) 函數(shù)執(zhí)行本身花費的時間,不包括子樹執(zhí)行時間,以微秒算(一百萬分之一秒)  

EWall% 函數(shù)執(zhí)行本身花費的時間的百分比,不包括子樹執(zhí)行時間  

Incl. CPU(microsecs) 調(diào)用的包括子函數(shù)所有花費的cpu時間。減Incl. Wall Time即為等待cpu的時間  

減Excl. Wall Time即為等待cpu的時間  

ICpu% Incl. CPU(microsecs)的百分比  

Excl. CPU(microsec) 函數(shù)執(zhí)行本身花費的cpu時間,不包括子樹執(zhí)行時間,以微秒算(一百萬分之一秒)。  

ECPU% Excl. CPU(microsec)的百分比  

Incl.MemUse(bytes) 包括子函數(shù)執(zhí)行使用的內(nèi)存。  

IMemUse% Incl.MemUse(bytes)的百分比  

Excl.MemUse(bytes) 函數(shù)執(zhí)行本身內(nèi)存,以字節(jié)算  

EMemUse% Excl.MemUse(bytes)的百分比  

Incl.PeakMemUse(bytes) Incl.MemUse的峰值  

IPeakMemUse% Incl.PeakMemUse(bytes) 的峰值百分比  

Excl.PeakMemUse(bytes) Excl.MemUse的峰值  

EPeakMemUse% EMemUse% 峰值百分比  


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI