您好,登錄后才能下訂單哦!
早就聽說了xhprof這款由facebook開源的php性能分析工具了,只是一直沒有使用過,因為工作中從來沒有對代碼進行過性能分析.目前項目的代碼中集成了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過程中,出現了error 1的bug,導致make錯誤.安裝失敗
最后更換了xhprof的版本才通過
xhprof文件中有兩個重要的文件目錄:
1,xhprof_html,這個目錄中有個docs目錄,里面有關于xhprof的文檔.另外xhprof的分析結果文件需要使用xhprof_html中的index.php文件進行結果顯示
2,xhprof_lib,這個目錄就是代碼中需要引入的文件
這兩個目錄都要放到站點下面.xhprof_html可以放到單獨的站點下,這樣就可以通過獨立的域名查看分析結果
3.examples,這個目錄下的sample.php是個測試文件
編譯安裝xhprof之后需要在php.ini中對此擴展進行設置
extension=xhprof.so
xhprof.output_dir=/www/logs/xhprof ,這里指定xhprof生成的分析結果文件,此目錄要實現建立,并需要有寫權限
編寫測試代碼:
<?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); 不記錄內置的函數 //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就是生成的分析結果文件,寫入到xhprof.output_dir目錄中,'hx'在文檔中稱為namespace $url = $xhprof_root."/xhprof_html/index.php?run=$run_id&source=hx"; //$xhprof_root就是訪問xhprof_html的域名 echo ''.$url.'';
在瀏覽器中打開此$url就能看到分析結果了
Function Name 函數名
Calls 調用次數
Calls% 調用百分比
Incl. Wall Time (microsec) 調用的包括子函數所有花費時間 以微秒算(一百萬分之一秒)
IWall% 調用的包括子函數所有花費時間的百分比
Excl. Wall Time (microsec) 函數執行本身花費的時間,不包括子樹執行時間,以微秒算(一百萬分之一秒)
EWall% 函數執行本身花費的時間的百分比,不包括子樹執行時間
Incl. CPU(microsecs) 調用的包括子函數所有花費的cpu時間。減Incl. Wall Time即為等待cpu的時間
減Excl. 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% 峰值百分比
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。