2012-07-16 62 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