PHP7下安装并使用xhprof性能工具
该 xhprof 版本是从 https://github.com/longxinH/xhprof 获取
git clone https://github.com/longxinH/xhprof
安装 xhprof
cd xhprof/extension/
phpize
./configure
make
make install
然后在/etc/php.ini中根据情况加入
extension=xhprof.so
执行
php -m | grep xhprof
可以看见输出,说明php扩展安装成功,然后重启Apache或者php-fpm
运行
可以直接运行从github上clone下来的文件里面example目录下的那个例子
输出如下
Array
(
[main()] => Array
(
[ct] => 1
[wt] => 9
)
)
---------------
Assuming you have set up the http based UI for
XHProf at some address, you can view run at
http://<xhprof-ui-address>/index.php?run=592567308784c&source=xhprof_foo
---------------
然后复制index.php后面的?run=592567308784c&source=xhprof_foo
访问
xhprof_html/index.php?run=592567308784c&source=xhprof_foo
可看见输出
点击中间的 View Full Callgraph 即可看见性能分析图片
报错
failed to execute cmd:" dot -Tpng". stderr:sh: dot:command not found。
//解决方案
yum install graphviz
随机应变
比如想测试自己的项目,例如一款框架的性能分析。
复制xhprof_lib/utils/下的两个文件
xhprof_lib.php和xhprof_runs.php到入口文件同级目录,然后在入口文件起始位置添加
// start profiling
xhprof_enable();
结束位置添加
// stop profiler
$xhprof_data = xhprof_disable();
// display raw xhprof data for the profiler run
print_r($xhprof_data);
include_once "xhprof_lib.php";
include_once "xhprof_runs.php";
// save raw data for this profiler run using default
// implementation of iXHProfRuns.
$xhprof_runs = new XHProfRuns_Default();
// save the run under a namespace "xhprof_foo"
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");
echo "---------------\n".
"Assuming you have set up the http based UI for \n".
"XHProf at some address, you can view run at \n".
"http://<xhprof-ui-address>/index.php?run=$run_id&source=xhprof_foo\n".
"---------------\n";
即可得到如上所示的那个url,然后再次去访问
http://***/xhprof_html/index.php?run=*****&source=xhprof_foo
得到如下所示页面
查看图片
图中红色的部分为性能比较低,耗时比较长的部分,我们可以根据根据哪些函数被标记为红色对系统的代码进行优化
补充
-
Function Name:方法名称。
-
Calls:方法被调用的次数。
-
Calls%:方法调用次数在同级方法总数调用次数中所占的百分比。
-
Incl.Wall Time(microsec):方法执行花费的时间,包括子方法的执行时间。(单位:微秒)
-
IWall%:方法执行花费的时间百分比。
-
Excl. Wall Time(microsec):方法本身执行花费的时间,不包括子方法的执行时间。(单位:微秒)
-
EWall%:方法本身执行花费的时间百分比。
-
Incl. CPU(microsecs):方法执行花费的CPU时间,包括子方法的执行时间。(单位:微秒)
-
ICpu%:方法执行花费的CPU时间百分比。
-
Excl. CPU(microsec):方法本身执行花费的CPU时间,不包括子方法的执行时间。(单位:微秒)
-
ECPU%:方法本身执行花费的CPU时间百分比。
-
Incl.MemUse(bytes):方法执行占用的内存,包括子方法执行占用的内存。(单位:字节)
-
IMemUse%:方法执行占用的内存百分比。
-
Excl.MemUse(bytes):方法本身执行占用的内存,不包括子方法执行占用的内存。(单位:字节)
-
EMemUse%:方法本身执行占用的内存百分比。
-
Incl.PeakMemUse(bytes):Incl.MemUse峰值。(单位:字节)
-
IPeakMemUse%:Incl.MemUse峰值百分比。
-
Excl.PeakMemUse(bytes):Excl.MemUse峰值。单位:(字节)
-
EPeakMemUse%:Excl.MemUse峰值百分比。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanfhcaa
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24