启用Xdebug使用WinCacheGrind分析脚本执行时间
2011-12-29 12:47
495 查看
使用Xdebug调试和优化PHP程序系列教程之WinCacheGrind,教你如何利用Xdebug 配合WinCacheGrind工具来检测PHP代码的效率以及分析PHP代码。
有时候代码没有明显的编写错误,没有显示任何错误信息(如 error、warning、notice等),但是这不表明代码就是正确无误的。有时候可能某段代码执行时间过长,占用内存过多以致于影响整个系统的效 率,我们没有办法直接看出来是哪部份代码出了问题。这时候我们希望把代码的每个阶段的运行情况都监控起来,写到日志文件中去,运行一段时间后再进行分析, 找到问题所在。
回忆一下,之前我们编辑php.ini文件
加入
这几行,目的就在于把执行情况的分析文件写入到”I:\Projects\xdebug”目录中去 (你可以替换成任何你想设定的目录)。如果你执行某段程序后,再打开相应的目录,可以发现生成了一堆文件,例如 cachegrind.out.1169585776这种格式命名的文件。这些就是 Xdebug生成的分析文件。用编辑器打开你可以看到很多程序运行的相关细节信息,不过很显然这样看太累了,我们需要用图形化的软件来查看。
安装教程也可以参考这里:http://blog.haohtml.com/index.php/archives/3096
WinCacheGrind 下载
在Windows平台下,可以用 WinCacheGrind(wincachegrind.souceforge.net)这个软件来打开这些文件。可以直观漂亮地显示其中内容:
哇,非常漂亮,我们很直观地看到 index.php中我们调用了一个函数testXdebug(),testXdebug()中又调用了requireFile()函数。这样我们就可以 非常方便地查看整个脚本的程序结构。
另外,我们还可以看到每个函数被调用的次数及执行所花费的时间!这对于测试程序性能非常有用。
好了,这么一个简单的程序不太能 显示出Xdebug+WinCacheGrind的强大,我给出一个稍大点的例子(一个基于Zend Framework的CMS的index.php):
从上图可以看到:整个程序的结构, 每个函数被调用的次数,执行时间都一目了然。
WinCacheGrind 小结:
Xdebug提供了各种自带的函数,并对已有的某些PHP函数进行覆写,可以方便地用于调试排错;Xdebug还可以跟 踪程序的运行,通过对日志文件的分析,我们可以迅速找到程序运行的瓶颈所在,提高程序效率,从而提高整个系统的性能。
Self是代表此Funcion自己花费的时间,不包含此Function调用的其他Function。
Cum则是此Funcion整体花费的时间,包含此Function调用的其他Function。
有时候代码没有明显的编写错误,没有显示任何错误信息(如 error、warning、notice等),但是这不表明代码就是正确无误的。有时候可能某段代码执行时间过长,占用内存过多以致于影响整个系统的效 率,我们没有办法直接看出来是哪部份代码出了问题。这时候我们希望把代码的每个阶段的运行情况都监控起来,写到日志文件中去,运行一段时间后再进行分析, 找到问题所在。
回忆一下,之前我们编辑php.ini文件
加入
[Xdebug] xdebug.profiler_enable=on xdebug.trace_output_dir="I:\Projects\xdebug" xdebug.profiler_output_dir="I:\Projects\xdebug"
这几行,目的就在于把执行情况的分析文件写入到”I:\Projects\xdebug”目录中去 (你可以替换成任何你想设定的目录)。如果你执行某段程序后,再打开相应的目录,可以发现生成了一堆文件,例如 cachegrind.out.1169585776这种格式命名的文件。这些就是 Xdebug生成的分析文件。用编辑器打开你可以看到很多程序运行的相关细节信息,不过很显然这样看太累了,我们需要用图形化的软件来查看。
安装教程也可以参考这里:http://blog.haohtml.com/index.php/archives/3096
WinCacheGrind 下载
在Windows平台下,可以用 WinCacheGrind(wincachegrind.souceforge.net)这个软件来打开这些文件。可以直观漂亮地显示其中内容:
哇,非常漂亮,我们很直观地看到 index.php中我们调用了一个函数testXdebug(),testXdebug()中又调用了requireFile()函数。这样我们就可以 非常方便地查看整个脚本的程序结构。
另外,我们还可以看到每个函数被调用的次数及执行所花费的时间!这对于测试程序性能非常有用。
好了,这么一个简单的程序不太能 显示出Xdebug+WinCacheGrind的强大,我给出一个稍大点的例子(一个基于Zend Framework的CMS的index.php):
从上图可以看到:整个程序的结构, 每个函数被调用的次数,执行时间都一目了然。
WinCacheGrind 小结:
Xdebug提供了各种自带的函数,并对已有的某些PHP函数进行覆写,可以方便地用于调试排错;Xdebug还可以跟 踪程序的运行,通过对日志文件的分析,我们可以迅速找到程序运行的瓶颈所在,提高程序效率,从而提高整个系统的性能。
Self是代表此Funcion自己花费的时间,不包含此Function调用的其他Function。
Cum则是此Funcion整体花费的时间,包含此Function调用的其他Function。
相关文章推荐
- 启用Xdebug使用WinCacheGrind分析脚本执行时间 【转载】
- 启用Xdebug使用WinCacheGrind分析脚本执行时间 .
- Windows 下使用 KCachegrind/WinCachegrind 和 XDebug 测试php程序性能。
- php调试工具Xdebug安装与分析工具Wincachegrind
- WinCacheGrind配合XDebug分析PHP程序性能
- WinCacheGrind配合XDebug分析PHP程序性能
- Windows 下使用 KCachegrind/WinCachegrind 和 XDebug 测试php程序性能。
- 利用Xdebug和WinCacheGrind分析PHP程序,找出性能瓶颈
- php调试工具Xdebug安装与分析工具Wincachegrind
- XDebug 配置与使用,WinCacheGrind 查看
- WinCacheGrind配合XDebug分析PHP程序性能
- XDebug 配置与使用,WinCacheGrind 查看
- WinCacheGrind配合XDebug分析PHP程序性能
- WinCacheGrind配合XDebug分析PHP程序性能
- xdebug的安装、使用、配置、调试、及工具wincachegrind的使用
- 利用 Xdebug+WinCacheGrind 分析PHP程序,找出性能瓶颈
- Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程
- Android系统Recovery工作原理之使用update.zip升级过程分析(八)---解析并执行升级脚本updater-script
- xdebug与WinCacheGrind配合调试
- Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程【转】