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