2012-07-16 57 views
4

phpMyAdmin我们遭受了奇怪的测试套减速一段时间。我们已经能够将问题追溯到启用xdebug的情况(用于代码覆盖),并且在ob_start/ob_end_clean块内存在错误。去除这些中的任何一个都会大大减少测试套件的时间。如何找到为什么phpunit测试套件与xdebug太慢?

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

这只是为了显示差异有多大,以及为什么我们想摆脱这一点。

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

这里的区别是一个测试除去单个数据集(你会寻找到来源的情况下,这是最后一个数据:

在规模较小的,这可以用单一的测试test/classes/PMA_Advisor_test.php显示设置),并导致测试不到一半的时间!更新:在这种特殊情况下,问题可以使用xdebug.default_enable=0来缓解,但对于整个测试套件来说,这并没有太大的改变。乍看之下,它确实看起来像xdebug中的一些错误,但我们一直无法生成比上面更小的测试用例,听起来很可疑。任何想法如何进一步调查问题进一步了解如何确定实际造成这种缓慢的原因?

+0

为什么你认为这是太慢? xdebug报告错误是什么?也许它只是记录更多的信息,而不是没有错误。 – Martijn 2012-07-16 11:34:20

+0

因为它不用那么慢:-)。作为测试套件唯一使用xdebug的是覆盖率分析,我不希望它会因错误而放慢速度。 – 2012-07-16 11:41:35

+0

其实''xdebug.default_enable = 0'去掉了单个测试用例的差异,所以堆栈跟踪集合确实是cuplrit的一个,感谢提示!不幸的是,它并没有完整的测试套件,所以还有其他一些问题。 – 2012-07-16 12:03:57

回答

0

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

+1

这实际上并不是我的情况。 – 2012-08-21 14:06:42

0

我有这个问题,由于探查器正在打开,这也将产生巨大的cachegrind文件。

检查xdebug.profiler_enable = 0

> documentation