使用 KCacheGrind 聚合 PHP XDebug 数据
Posted
技术标签:
【中文标题】使用 KCacheGrind 聚合 PHP XDebug 数据【英文标题】:Aggregate PHP XDebug data with KCacheGrind 【发布时间】:2012-08-09 16:47:22 【问题描述】:有没有什么方法可以汇总 php XDebug 以前获取的配置文件数据?
我已经管理 PHP XDebug 将与一个请求相关的数据放到单个文件中。当我在 kcachegrind 中打开该文件时,它会显示该文件中聚合的所有请求。但是,每个请求都有自己的堆栈跟踪(我理解,它可能会改变)。有什么方法可以查看从所有请求中汇总的配置文件数据?我不在乎它是否不是 100 % 准确,或者是否缺少某些呼叫,我只需要对所有日常操作进行简要概述。
免责声明:kcachegrind 不是必需的,我只是发现它是迄今为止最好的工具。
【问题讨论】:
哎哟..所有日常操作?您要汇总的跟踪文件的数量(以兆为单位)是多少? 【参考方案1】:将所有文件合二为一:
cat cachegrind.out.* > cachegrind.combined
打开 cachegrind.combined 并选择窗口右下角的“零件”选项卡。您将看到那里列出的配置文件的多个部分。全部选中(CTRL+a 或使用鼠标),您将看到所有这些配置文件的汇总数据。
【讨论】:
【参考方案2】:我不确定,但请参阅下面的 URL 并阅读它。我认为这对您很有帮助。
使用 Xdebug 和 Webgrind 分析 PHP
http://www.chrisabernethy.com/php-profiling-xdebug-webgrind/
查找和修复 PHP Web 应用程序中的性能瓶颈既费时又困难。幸运的是,Xdebug 和 Webgrind 等免费工具可让您轻松找到并可视化 PHP 脚本中的瓶颈。
Webgrind 是 PHP5 中的 Xdebug 分析 Web 前端。它实现了 kcachegrind 的一部分功能,并在几秒钟内安装并适用于所有平台。--Webgrind
任何需要分析代码的人都可能熟悉 KcacheGrind(一种分析数据可视化工具)。 KcacheGrind 提供了一种从程序执行中可视化配置文件数据的方法,使您可以快速轻松地查看程序在哪里花费时间。了解执行瓶颈的位置可以让您将优化工作集中在正确的位置。
长期以来,PHP 的 Xdebug 扩展能够(除其他外)以 KcacheGrind 可用的格式将执行配置文件信息转储到磁盘,如果您使用 KDE 运行 Linux,这非常棒。
webgrind 项目为 KcacheGrind 提供了一个基于 Web 的替代品,可以安装在任何操作系统上,让您可以通过浏览器可视化 Xdebug 分析数据的一部分。
阅读文章上方的更多内容
http://www.chrisabernethy.com/php-profiling-xdebug-webgrind/
另请参阅另一个示例并阅读:-
PHP 的 XDEBUG 扩展 |文件
http://xdebug.org/docs/profiler
Xdebug 的内置分析器允许您发现脚本中的瓶颈并使用 KCacheGrind 或 WinCacheGrind 等外部工具将其可视化。 简介
Xdebug 的 Profiler 是一个强大的工具,它使您能够分析 PHP 代码并确定瓶颈,或者通常查看代码的哪些部分很慢并且可以使用速度提升。 Xdebug 2 中的分析器以 cachegrind 兼容文件的形式输出分析信息。这允许您使用出色的 KCacheGrind 工具(Linux/Windows、KDE)来分析您的分析数据。如果你在 Linux 上,你可以用你最喜欢的包管理器安装 KCacheGrind;如果您使用的是 Windows,您可以在 SourceForge 获得 KCacheGrind 的预编译二进制文件。
Windows 用户也可以使用 WinCacheGrind,其功能与 KCacheGrind 不同,因此本页面上记录使用 KCacheGrind 的部分不适用于此程序。还有一个替代的配置文件信息呈现工具称为 xdebugtoolkit,基于 Web 的前端称为 Webgrind 和基于 Java 的工具称为 XCallGraph。
阅读文章上方的更多内容
http://xdebug.org/docs/profiler
【讨论】:
感谢您的回答。但是,我对我的问题看不到太多 - 数据聚合和多个请求的分析在一个(kcachegrind/webgrind)概述中。【参考方案3】:生成的报告是 TEXT 并且可以被解析,因此构建生成报告的解析器应该不会太复杂。 我在 windows 上使用 WinCacheGrind,发现它非常好,因为除了详细的树之外,它还显示了一般的组合时间/功能以及它有多少调用。
【讨论】:
知道如何创建这样的解析器吗? 从头开始 :) 加载文件并循环遍历它的行,将数据根据它所代表的内容很好地放入数组中。它具有可解析的格式,否则不会有任何 CacheGrind 程序。如果您不喜欢弄脏并从头开始编写代码,请尝试code.google.com/p/webgrind。以上是关于使用 KCacheGrind 聚合 PHP XDebug 数据的主要内容,如果未能解决你的问题,请参考以下文章
kcachegrind 难以链接 php xdebug 调用