1

私は何年もの間、Rails プロジェクトのすべてのテストを実行するためにZenTestを使用してきました。しかし、私の Mac では、すべてのテストを実行するのに突然 3 倍の時間がかかり始めました。1219 のテストがあり、過去 1 年間は平均で約 300 秒ですべてのテストを実行していました。ただし、ほぼ 900 秒かかります。

Finished in 861.3578 seconds.

1219 tests, 8167 assertions, 0 failures, 0 errors
==============================================================================

このような減速が発生する理由は考えられません。最新のgemバージョンに更新して、テストからのログ出力を減らし、テストデータベースを再生成しようとしましたが、すべて役に立ちませんでした. 誰かがパフォーマンスを改善する方法を提案できますか?

4

3 に答える 3

4

不可能を排除したとき、どんなにありそうもないことであっても、残っているものはすべて説明に違いありません: それが gem でなく、データベースでなく (インデックスをチェックしましたか?)、Mac でなく、Rails でなく (最近アップグレードしましたか?)、コードですか?

git/svn/cvs のログをチェックして、最近行ったいくつかの変更を確認し、たとえばクエリを遅くしている可能性があるものを探します。

すぐに何も見つからない場合は、コードをプロファイリングして、時間がどこに向かっているのかを確認してください。これは、変更したことを思い出すよりも遅くなりますが (この種の状況ではほとんどの場合、これが原因であることが判明します)、正しい方向に進む可能性があります。

さまざまな要因が影響を与える可能性があるため、パフォーマンスの問題はイライラすることがあります。DB にインデックスがありません。ネットワーク遅延。メモリ不足の状態。あきらめず、ティルトンの法則を心に留めておいてください。

于 2009-02-03T23:18:33.737 に答える
2

あなたは本当にここでもう少し宿題をするつもりです、私はそのZenTestを疑っています:

  1. 数か月前に物事が素晴らしくてダンディだったときに、コードのバージョンを入手してください。すべてのテストを実行し、すべてのテスト期間をスプレッドシートなどに出力します。

  2. コードベースの現在のバージョンを取得し、1)でプロセスを繰り返します。

  3. 期間が同じである場合、DB構成またはマシン構成に関する何かが変更されています

  4. すべてのテストが平均して遅い場合、これを診断するのは困難ですが、各テストで実行されている新しいコードがあるように思われます。

  5. いくつかの新しいテストが本当に遅い場合は、それらを修正してください。

于 2009-02-04T05:23:53.530 に答える
0

だから私はついにこれを解決しました。3つの簡単なステップの方法は次のとおりです。

  1. OSXLeopardCDを挿入します
  2. Leopardを最初から完全に再インストールする
  3. Ruby、MySQLなどを再インストールします

これを行った後、テストは260秒未満で実行されます。

何が起こったのかわかりませんが、確かにどこかでMySQLの問題だったようです。

于 2009-05-20T12:42:02.137 に答える