查看xdebug profile文件的几个程序

在优化php代码执行效率过程中,有个好办法是利用xdebug生成profile文件,然后查看整个程序的瓶颈在哪里。现在xdebug profile的查看程序有好几个,在这里罗列一下.

Wincachegrind

Wincachegrind是windows下的profile查看程序,使用起来感觉还不错,profile文件太大的话偶尔会崩溃。

今天在高春辉的博客上看到这些:

最近又开始拿 Xdebug 和 wincachegrind 对项目的 PHP 代码进行分析和优化,但是发现和自己输出的执行时间总是相差十倍,差的不是零头,而是十倍。
上网搜索了一下,原来在 Xdebug 2.0.0RC4 版本开始,对 profiler 日志中的时间单位进行了修改。
(“Use µ seconds instead of a tenths of µ seconds to avoid confusion in profile information. ”)
而 wincachegrind 又不再升级维护了,所以凡是用 2.0.0RC4 以及之后版本的 Xdebug 输出的 profiler 日志用 wincachegrind 来分析的话,都会有十倍的时间差距。

他已经提供了hack后的版本,可以解决时间差距的问题,有兴趣的同学可以试试。

CachegrindVisualizer

CachegrindVisualizer是一个xdebug的profile文件查看客户端,采用Adobe的AIR制作。

更详细的介绍可以看以前写的关于CachegrindVisualizer的介绍

Kcachegrind

Kcachegrind是linux下的一个图形化profile查看工具,功能很强劲。

Callgrind uses runtime instrumentation via the Valgrind framework for its cache simulation and call-graph generation. This way, even shared libraries and dynamically opened plugins can be profiled. The data files generated by Callgrind can be loaded into KCachegrind for browsing the performance results.

webgrind

webgrind和wincachegrind的功能差不多,但是webgrind是基于web的,采用php写的查看工具。看了一下代码,跑在linux的服务器比较好。

Webgrind is an Xdebug profiling web frontend in PHP5. It implements only a minimal subset of the features of kcachegrind, but installs in seconds and works on all platforms. For quick’n’dirty optimizations it does the job.

下面是用webgrind查看phpmyadmin的profile抓图:

CachegrindVisualizer

CachegrindVisualizer是一个xdebug的profile文件查看客户端,采用Adobe的AIR制作,很让人惊讶,因为目前我看到的采用AIR制作的软件少的可怜.

与CachegrindVisualizer具有类似功能的软件还有wincachegrind,相比之下,wincachegrind的功能更为强大,使用上也更方便.但是即便如此,我还是乐见CachegrindVisualizer发展的更好.

CachegrindVisualizer支持的操作系统

Windows 2000 SP4, Windows XP SP2, Windows Vista Home and Ultimate Edition, Mac OS 10.4.7 and above (Intel and PowerPC), Mac OS X Leopard.

运行时的抓图

CachegrindVisualizer

相关连接

ubuntu下安装xdebug的笔记

在ubuntu下安装xdebug的笔记。

  • 下载xdebug 2.0: http://www.xdebug.org/link.php?url=xdebug200
  • 解压:
     tar xzvf xdebug-2.0.0.tgz
  • 编译安装:
    cd xdebug-2.0.0
    phpize
    ./configure --enable-xdebug
    make
    cp modules/xdebug.so /usr/lib/php5/20051025/
    

    这里的/usr/lib/php5/20051025/是我的php extension_dir目录

  • 修改配置文件php.ini,添加一行
    zend_extension="/wherever/you/put/it/xdebug.so"
  • 重启apache

顺便贴个 ubuntu下安装php5 + pdo

用xdebug优化php的三个小窍门

xdebug的2.0正式版已经发布了。这个工具用在php的代码调试,优化方面效果很不错。下面贴上俺使用过程中的几个小窍门。

  • xdebug生成profile文件,可以用KCachegrind来查看,但是这个工具只在linux下面可用,没有windows下的版本。这里推荐一个win下的免费工具——wincachegrind,也可以查看xdebug的profile文件,用来分析php代码运行情况足够用了(偶尔不太稳定)。
  • xdebug一般情况下只会对一个请求做profile记录,如果需要查看几个请求的运行情况合集,可以设置xdebug.ini的
    xdebug.profiler_aggregate = 1

    记得重启你的apache。

  • 如果在xdebug.ini里设置了
    xdebug.profiler_enable = 1

    那么每次程序运行期间xdebug都会记录profile,这样对程序的运行速度有很大的影响。为了避免这一情况发生,可以让xdebug仅在需要的时候运行——设置

    xdebug.profiler_enable_trigger = 1

    这样,只有你用get/post方式提交XDEBUG_PROFILE变量的情况下,xdebug才会开始干活。

另:将最新版本的xdebug和APC同时使用,没有出现兼容性问题,运行良好。