5

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

ここでの違いは、1 つのテストで単一のデータセットを削除することです (ソースを調べている場合、それは最後のデータ セットです)。テストにかかる時間は半分以下です! 更新: この特定のケースでは、を使用して問題を軽減できますがxdebug.default_enable=0、テストスイート全体ではそれほど変わりません。

一見、xdebug のバグのように見えますが、上記よりも小さなテストケースを作成できず、疑わしいと思われます。この速度低下の実際の原因を突き止める方法について、問題をさらにデバッグする方法はありますか?

4

2 に答える 2

0

今思い出せない何らかの理由で show_local_vars を有効にしたため、テストが遅くなりました。 http://xdebug.org/docs/all_settings この情報がお役に立てば幸いです。

于 2012-08-19T19:30:39.467 に答える