您好,登錄后才能下訂單哦!
早就聽說了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é)果了
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% 峰值百分比
免責(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)容。