首页 > 其他 > 详细

xhprof学习笔记

时间:2014-03-27 04:58:44      阅读:618      评论:0      收藏:0      [点我收藏+]

一、简介

XHProf 是一个轻量级的分层性能测量分析器。 在数据收集阶段,它跟踪调用次数与测量数据,展示程序动态调用的弧线图。 它在报告、后期处理阶段计算了独占的性能度量,例如运行经过的时间、CPU 计算时间和内存开销。 函数性能报告可以由调用者和被调用者终止。 在数据搜集阶段 XHProf 通过调用图的循环来检测递归函数,通过赋予唯一的深度名称来避免递归调用的循环。

XHProf 包含了一个基于 HTML 的简单用户界面(由 PHP 写成)。 基于浏览器的用户界面使得浏览、分享性能数据结果更加简单方便。 同时也支持查看调用图。

XHProf 的报告对理解代码执行结构常常很有帮助。 比如此分层报告可用于确定在哪个调用链里调用了某个函数。

XHProf 对两次运行进行比较(又名 "diff" 报告),或者多次运行数据的合计。 对比、合并报告,很像针对单次运行的“平式视图”性能报告,就像“分层式视图”的性能报告。

更多额外文档可以在 ? facebook xhprof 上找到。

 

二、安装/配置

1. 安装xhprof

  1. wget http://pecl.php.net/get/xhprof-0.9.2.tgz  
  2. tar zxvf  xhprof-0.9.2.tgz  
  3. cp ./xhprof-0.9.2.tgz ./www         //xhprof自身带有一个web版的分析页面,放到我的web服务器下面  
  4. cd xhprof-0.9.2/extension  
  5. /usr/local/php/bin/phpize  
  6. ./configure --enable-xhprof --with-php-config=/usr/local/php/bin/php-config  //php安装目录
  7. make && make install  

2. 安装graphviz,一个画图工具
wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
tar zxf graphviz-2.24.0.tar.gz
cd graphviz-2.24.0
./configure
make && make install

3. 配置

  1. [xhprof]  
  2.  extension=xhprof.so  
  3.  xhprof.output_dir=/home/zhangy/xhprof  //如果不加存放目录的话,默认是放在/tmp下面  

三、XHProf测试

前面我们说过了,XHProf自身带有一个web版的测试工具,里面还有一个小例子。看一下这个例子,我做了一点修改和注释

  1. <?php  
  2. function bar($x) {  
  3.  if ($x > 0) {  
  4.  bar($x -1);  
  5.  }  
  6. }  
  7. function foo() {  
  8.  for ($idx = 0; $idx < 5; $idx++) {  
  9.  bar($idx);  
  10.  $x = strlen("abc");  
  11.  }  
  12. }  
  13.   
  14. //启动xhprof  
  15. xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);  
  16.   
  17. //调用foo函数,也是我们要分析的函数  
  18. foo();  
  19.   
  20. //停止xhprof  
  21. $xhprof_data = xhprof_disable();  
  22.   
  23. //取得统计数据  
  24. print_r($xhprof_data);  
  25.   
  26. $XHPROF_ROOT = realpath(dirname(__FILE__) . ‘/..‘);  
  27. include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";  
  28. include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";  
  29.   
  30. //保存统计数据,生成统计ID和source名称  
  31. $xhprof_runs = new XHProfRuns_Default();  
  32. $run_id = $xhprof_runs->save_run($xhprof_data"xhprof_foo"); //source名称是xhprof_foo  
  33.   
  34. //弹出一个统计窗口,查看统计信息  
  35. echo "<script language=‘javascript‘>window.open(‘../xhprof_html/index.php?run=" . $run_id . "&source=xhprof_foo‘);</script>";  
  36. ?>  

运行程序,底部出现统计字样,点过去就可以看到性能分析了。按运行时间排序,很容易找出化时间最长的函数。
点[View Full Callgraph]图形化显示,最大的性能问题会用红色标出,其次是黄色,很明显。以下是部分的结果:

  1. [foo==>bar] => Array  
  2.  (  
  3.  [ct] => 5       //bar()这个函数被调用了5次  
  4.  [wt] => 63      //每次运行bar()所要的时间,不知道这个是不是平均值  
  5.  [cpu] => 0      //每次运行bar(),cpu运算时间  
  6.  [mu] => 2860    //每次运行bar(),php所使用内存的改变  
  7.  [pmu] => 0      //每次运行bar(),php在内存使用最高峰时,所使用内存的改变  
  8.  )  

 

xhprof学习笔记,布布扣,bubuko.com

xhprof学习笔记

原文:http://www.cnblogs.com/penghaibo/p/3627220.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!