如何找到为什么phpunit testsuite与xdebug太慢?

时间:2012-07-16 11:28:45

标签: php phpunit xdebug output-buffering

phpMyAdmin,我们遭受了一段时间的奇怪测试速度减慢。我们已经能够将问题跟踪到启用xdebug时的情况(代码覆盖)并且ob_start / ob_end_clean块中存在错误。删除其中任何一个都会大大缩短测试时间。

                xdebug       enabled      disabled
ob_start failure tests
enabled                       20 min        15 s
disabled                      1 min         15 s

这只是为了表明差异有多大以及为什么我们要摆脱它。

在较小的范围内,可以使用单个测试test/classes/PMA_Advisor_test.php显示:

                xdebug       enabled      disabled
ob_start failure tests
enabled                       7.2 s         0.1 s
disabled                      2.6 s         0.1 s

这里的区别在于删除一个测试的单个数据集(如果您要查看源,它是最后一个数据集)并导致测试花费不到一半的时间!更新:在这种特殊情况下,可以使用xdebug.default_enable=0来缓解问题,但对于整个测试套件来说,这并没有太大变化。

乍一看它确实看起来像是xdebug中的一些错误,但是我们无法生成比上面更小的测试用例,这听起来很可疑。任何想法如何进一步调试问题如何找出实际导致这种减速的原因?

2 个答案:

答案 0 :(得分:1)

由于启动了探查器,我发现了这个问题,这也会产生巨大的cachegrind文件。

检查xdebug.profiler_enable = 0

> documentation

答案 1 :(得分:0)

我的测试速度很慢,因为我出于某种原因启用了show_local_vars,这是我现在记不住的了。 http://xdebug.org/docs/all_settings 希望这些信息会有所帮助。