如何看懂XDEBUG+WEBGRIND?(转)

简介:

看到一个很有用的东东,收藏。。

http://blog.csdn.net/yukon12345/article/details/11408617

~~~~~~~~~~

使用:                                                                       
设置好后就可以重启wamp来看看效果:
我们使用XDEBUG_PROFILE作为url的一个参数写在某个页面上后,转入页面,然后到xdebug.profiler_output_dir所定的路径下,就会发现生成了一个cachegrind.out.开头的文件,这就是webgrind需要分析的文件
进入webgrind主页面:页面很简单,右上角有一排下拉列表

第一项参数参数其实我也纠结了一下,怎么才容易想清楚和说明白:

webgrind把所有被调用函数/方法首先做一个排序,由高到低显示。然后取出前N个,使他们耗时比率之和在90-100%之间。

要注意的是,最好不要选择100%,这样将会显示所有被调用的函数/方法,如果是一个代码复杂的页面,那么webgrind偶尔会被卡死。并且通常我们只要关注耗时前几名的函数即可。

第二个就是选择profile文件。默认是分析最新一次的xdebug记录。如果之前设置好路径和记录机制那么我们就会发现下拉列表里有很多选项。

第三个选项是显示百分比/毫秒/微秒。

下面的彩色进度条一样的东东是耗时量比较条。蓝代表php内置函数,灰色(这里占用很小看不出)代表requir/onclude,绿代表类方法,橙黄代表类其他过程函数 (用户自定义函数)

结果查看                                                               

然后下面的分析列表的样子:(选了毫秒作为显示单位)

 

对于其中一些参数,我在结合我的官网翻译以及stackoverflow看到的解释是这样的:

Invocation Count
被调用执行的次数

Total Self Cost - 函数自身开销耗时  毫秒/ 微秒 /百分比(并不包含调用其他函数)
Total Inclusive Cost - 综合耗时。包括自身耗时和调用所有的其他函数的耗时

细节分析                                                                   

我经过试验,才明确了解了几个数据的区别:

测试代码:

[php]  view plain copy print ?
 
  1. <?php  
  2. //仅使用内置函数  
  3. function t1(){  
  4.     time();  
  5. }  
  6. //自定义函数外再执行一次  
  7.  time();  
  8.  sleep(1);  
  9. t1();  
  10. //t2调用自定义函数  
  11. function t2(){  
  12.    t1();  
  13. }  
  14. t2();  
  15. //增加内置函数耗时  
  16. function t3(){  
  17.       sleep(1);  
  18. }  
  19. t3();  
  20. //t4增加调用自定义函数t3一次。  
  21. function t4(){  
  22.    t3();  
  23.    sleep(1);  
  24. }  
  25. t4();  
  26. //t5增加非调用函数式内耗 for循环10万次,并调用t4  
  27. function t5()  
  28. $u=0;  
  29.   for($i=0;$i<100000;$i++)  
  30.   {  $u+=$i;   }  
  31.   t4();  
  32. }  
  33. t5();  
  34. ?>  

得出:

 

因此我们可以得出最终结论:                             

  1. invocation count 表示的是整个php页面从载入到执行完毕呈现,各种函数被调用的总次数(如sleep不管被哪个函数调用,总共页面期执行了6次,t3被t4直接调用、t5间接调用一次,自身执行一次)
  2. total self cost 表示的是函数自身消耗(就如t5中10万次循环消耗了31毫秒,sleep执行了2000毫秒,但自身消耗并不把其他任何函数调用算在其中)
  3. total inclusive cost 表示的是此函数从开始到执行完毕所用消耗 ,包括自身消耗和调用其他函数消耗

点击一个父函数名后出现展开:

  1. Calls - 此函数中调用并执行的所有函数/方法名 次数 及耗时
  2. Total Call Cost - 被此父函数调用时,执行的总耗时 (the total time executing this function, when called from the parent function)
  3. Count - 被此父函数调用时,执行的次数。number of times the parent calls the child
目录
相关文章
|
1月前
|
PHP 开发工具 开发者
Xdebug在PHP中的应用
Xdebug 是一款非常实用的 PHP 调试工具,它为开发者提供了丰富的功能和便利,帮助开发者更高效地进行调试工作。熟练掌握 Xdebug 的使用方法,对于提高 PHP 开发质量和效率具有重要意义。
34 1
|
1月前
|
IDE PHP 开发工具
除了Xdebug,还有哪些常用的PHP调试工具?
这些调试工具各有特点,开发者可以根据自己的需求和习惯选择适合的工具。在实际开发中,结合多种工具的使用往往能够更全面、更深入地进行调试,提高开发效率和代码质量。同时,随着技术的不断发展,新的调试工具也在不断涌现,开发者需要保持学习和关注,以便及时掌握最新的调试技术和工具。
50 1
|
Web App开发 IDE 应用服务中间件
phpstorm+xdebug 配置断点调试
阅读tp框架源码过程中,经常被代码绕来绕去,头晕的很(tp框架源码已很久没有更新);
269 0
|
IDE 程序员 PHP
PHP中安装和使用xdebug
作为一个程序员,千万不要说你没有用过debug工具,不然有点说不过去。xdebug是PHP语言一个强大的利器,用他可以做很多事情。
208 0
Phpstorm+Xdebug配置断点调试
Phpstorm+Xdebug配置断点调试
157 0
Phpstorm+Xdebug配置断点调试
php.ini Xdebug配置
php.ini Xdebug配置
129 0
|
Web App开发 PHP 开发工具
phpStorm+XDebug+chrome 配置
运行环境: phpStorm 2018.1 php-7.2.4 php_xdebug-2.7.0alpha1-7.2-vc15-nts-x86_64.dll" 下载地址:https://xdebug.
1703 0
|
PHP 监控 Windows