WinCacheGrind download | SourceForge.net
https://sourceforge.net/projects/wincachegrind/
WinCacheGrind
http://ceefour.github.io/wincachegrind/
GitHub - ceefour/wincachegrind: WinCacheGrind is a viewer for cachegrind.out files generated by xdebug 2. WinCacheGrind is functionally similar to KCacheGrind, only it is much simpler and runs on Windows.
https://github.com/ceefour/wincachegrind
http://txf2004.iteye.com/blog/498727
如何检测代码中的不足?
有时候代码没有明显的编写错误,没有显示任何错误信息(如
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
生成的分析文件。用编辑器打开你可以看到很多程序运行的相关细节信息,不过很显然这样看太累了,我们需要用图形化的软件来查看。
在
Windows
平台下,可以用
WinCacheGrind(wincachegrind.souceforge.net)
这个软件来打开这些文件。
可以直观漂亮地显示其中内容:
哇,非常漂亮,我们很直观地看到
index.php
中我们调用了一个函数
testXdebug()
,
testXdebug()
中又调用了
requireFile()
函数。这样我们就可以非常方便地查看整个脚本的程序结构。
另外,我们还可以看到每个函数被调用的次数及执行所花费的时间!这对于测试程序性能非常有用。
好了,这么一个简单的程序不太能显示出
Xdebug+WinCacheGrind
的强大,我给出一个稍大点的例子(一个基于
Zend Framework
的
CMS
的
index.php
):
从上图可以看到:整个程序的结构,每个函数被调用的次数,执行时间都一目了然。
小结:
Xdebug
提供了各种自带的函数,并对已有的某些
PHP
函数进行覆写,可以方便地用于调试排错;
Xdebug
还可以跟踪程序的运行,通过对日志文件的分析,我们可以迅速找到程序运行的瓶颈所在,提高程序效率,从而提高整个系统的性能。