使用Xdebug实现PHP性能目标
我开始使用Xdebug和WinCacheGrind来了解更多关于我编写的代码 我目前正在测试一个购物车对象,它使用MySQL存储为一个持久会话 以下是对象在典型的“添加到购物车”操作中执行的步骤:使用Xdebug实现PHP性能目标,php,performance,xdebug,profiler,Php,Performance,Xdebug,Profiler,我开始使用Xdebug和WinCacheGrind来了解更多关于我编写的代码 我目前正在测试一个购物车对象,它使用MySQL存储为一个持久会话 以下是对象在典型的“添加到购物车”操作中执行的步骤: 构造一个包含默认值的购物车会话 使用检查MYSQL中现有的购物车会话 $\u COOKIE['session\u id']和$\u SERVER['REMOTE\u ADDR']。如果是,mysql 行填充购物车会话(12毫秒) 在购物车中设置国家/地区代码和州代码,以便进行进一步的装运计算 添加项目
C.不幸的是,XDebug中的评测本身会给PHP程序增加大量的性能开销 因此,您不应该依赖XDebug为您的代码提供以毫秒为单位的绝对速度数字。(事实上,您在测试平台上的性能不太可能成为现实世界中不同硬件和不同用户数量的性能指标) 相反,您应该专注于使用探查器输出来显示程序的哪些部分占用的时间最多。这些是您的瓶颈——不管程序实际运行的速度有多快,某些部分占用的处理器时间将超过其合理份额,这些是您应该重点改进的方面。这就是XDebug的profiler旨在帮助您实现的目标 至于分析XDebug的输出,我强烈建议放弃WinCacheGrind并下载。它是一个非常优秀的工具(主要是因为WinCacheGrind很久以前就停止了开发)。它有一些优秀的可视化工具,可以一目了然地看出代码的某些部分对整个系统的影响有多大 如果你真的需要知道你的绝对业绩数字,你可以考虑从XDebug转为XHPROF。XHProf是Facebook为PHP编写的轻量级分析器工具。它不像XDebug那样功能齐全(也不是很成熟;只是最近才开始被注意到),但它更轻,并且在使用时对性能没有太大影响。我仍然推荐XDebug,因为它的功能要强大得多,但这两种工具都有自己的位置
您可以在此处找到有关XHProf的更多信息:我发现KCacheGrind在分析xdebug探查器转储方面远远优于WinCacheGrind--从这里下载它我下载KCacheGrind,但cachegrind.*软件无法识别文件。更改文件名:识别文件格式,但是它需要一个不同的命名约定(我不知道为什么)。谢谢你的回答。我会查清楚的。关于性能,你知道我应该以毫秒为目标吗?正如我所说,依赖绝对毫秒时间不一定是一个可靠的指标。然而,如果您总共有130毫秒,其中一个函数需要90毫秒,那么您应该非常清楚需要在哪里改进性能。