如何找到phpunit测试套件使用xdebug太慢的原因


How to find why phpunit testsuite is too slow with xdebug?

在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中的一些bug,但我们一直无法生成比上面更小的测试用例,这听起来很可疑。有什么想法吗?如何进一步调试这个问题,以及如何找出真正导致速度减慢的原因?

我遇到了这个问题,因为探查器正在运行,它还会生成巨大的cachegrind文件。

检查xdebug.profile_enable=0

>文档

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