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

Mic*_*hař 5 php phpunit xdebug output-buffering

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

                xdebug       enabled      disabled
ob_start failure tests
enabled                       20 min        15 s
disabled                      1 min         15 s
Run Code Online (Sandbox Code Playgroud)

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

在较小的规模,这可以通过单一测试显示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
Run Code Online (Sandbox Code Playgroud)

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

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

Ara*_*ram 0

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