启用Xdebug使用WinCacheGrind分析脚本执行时间 .
来源:互联网 发布:5g网络什么时候出 编辑:程序博客网 时间:2024/06/07 01:32
有时候代码没有明显的编写错误,没有显示任何错误信息(如 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分析脚本执行时间 .
- 启用Xdebug使用WinCacheGrind分析脚本执行时间 【转载】
- WinCacheGrind配合XDebug分析PHP程序性能
- WinCacheGrind配合XDebug分析PHP程序性能
- XDebug 配置与使用,WinCacheGrind 查看
- XDebug 配置与使用,WinCacheGrind 查看
- php调试工具Xdebug安装与分析工具Wincachegrind
- php调试工具Xdebug安装与分析工具Wincachegrind
- 利用 Xdebug+WinCacheGrind 分析PHP程序,找出性能瓶颈
- 利用Xdebug和WinCacheGrind分析PHP程序,找出性能瓶颈
- PHP调试工具 Xdebug + WinCacheGrind
- xdebug与WinCacheGrind配合调试
- xdebug的安装、使用、配置、调试、及工具wincachegrind的使用
- Windows 下使用 KCachegrind/WinCachegrind 和 XDebug 测试php程序性能。
- Windows 下使用 KCachegrind/WinCachegrind 和 XDebug 测试php程序性能。
- windows下 xdebug+WinCacheGrind安装配置
- windows下安装Xdebug+WinCacheGrind
- (转)java 判断字符串什么编码类型
- 基本指令1
- MFC三态树控件自绘
- 公司到底需要招聘什么样的程序员?
- cut和grep结合案列(获取普通用户)
- 启用Xdebug使用WinCacheGrind分析脚本执行时间 .
- iOS的uinavigationController为null的原因及后果
- oracle入门之 Select查询语句(二)
- java-exercise-1 多线程下载的实现
- Apache POI 连接数据库生成excel
- jmeter安装配置
- 网络编程之inet_pton,inet_ntop,sock_ntop函数
- iOS Core Image Tutorial学习
- USB描述符和枚举总结 --自己总结