2009-06-02 7 views
22

Grails 1.0.5アプリを開発している間、私はgrails test-appのコマンドがどれほど遅いか気になります。実際のテストはちょうど〜10秒かかるにもかかわらず、全体の実行が のsys 0m1.860sgrailsテストの実行を高速化するには

0m53.955s

に本当の1m26.953s ユーザーを追加しますこれは、プラグインをロードし、Grailsのブートストラップを含みすべてのコードをコンパイルしてください。

grails test-app実行を高速化する方法についてのヒントは非常に高く評価されます。

答えて

35

対話モードを使用すると、テスト実行をスピードアップできます。ただ、その後

grails interactive 

を実行

test-app 

を入力する最初の時間はいつもと同じになりますが、その後の各時間が劇的に速くなります。現在のところ、インタラクティブモードにはいくつかの問題があります(数回実行した後にメモリが足りなくなるなど)が、まだ価値があると思います。

+0

ブリリアント!ありがとうございました。 –

+6

私はちょうどあなたのpermgenスペースをより寛大に設定することをお勧めします。 -XX:PermSize = 64m -XX:MaxPermSize = 512m – Kuukage

+1

私たちはgrailsプロジェクトをMaven経由で実行します。この場合、最初のコマンドはmvn grails:exec -Dcommand = "interactive"です。 –

1

あなたはまだあなたは、おそらくの1.6

+0

ありがとう: GGTS vm args

も速度を増加させるために改変することができ、いくつかのJVMの設定があります。私はGrails 1.0.xが1.6.xでどのように動作するのか不明で、1.5.xはバンドルされているので不思議ではありません。 –

6

そのパフォーマンスの問題があり、それをスピードアップするための任意のハードと高速のルールではない、とのGroovyのためにアップグレードすることで、数秒を剃ることができGroovyの1.5.xのを使用している場合あなたはあなたのアプリに固有のものかも知れません。

ブートストラップに約75秒かかる場合は、かなり長いと聞きます。 Bootstrap.groovyファイルに何が入っていても、スリム化できるかどうかを詳しく見ていきたいと思います。

不要なプラグインがありますか(またはパフォーマンスに大きな影響を及ぼす可能性があります)?

これは現在のところ可能ではないかもしれませんが、grails 1.1.1/groovy 1.6.3のgrails 1.0.5/groovy 1.5.7に対する速度の向上はかなり重要です。

テストは、私はどちらか一方にworkiingてる場合統合テストのみのユニットテストのみを指定するときに本当に私を助けもう一つ:

grails test-app -unit 

grails test-app -integration 

あなたはまた、(特定のテストクラスを指定することができます5つのプラグインや〜40ドメインクラスとブートストラップ、Grailsの1.1.1では

grails test-app -integration MyService 

:「テスト」接頭辞)せずに、本当に「MyServiceTests」に統合)のためのTDD(EXを支援することができ、単一のテストを実行するには私には20秒もかかりません。

+0

提案していただきありがとうございます - 私はこれも私の遅いdevのハードウェアであることを追加したいと思います。 grails 1.6.3への移行はわずか5%をカットします。 –

+1

@Robertあなたはgroovy 1.6.3を意味する必要があります。 –

1

grailsにはhttp://grails.org/plugin/testingがインストールされています。これはドメインの内容を模倣するので、ユニットのようにドメインクラスのテストを行うことができます。彼らはかなり速く走る。

1

私の答えはこちらをご覧ください。あまり定義されていない人工物に頼っているプラ​​グインは、新しいバージョンが登場するたびにグレイルを見てしまう可能性があります。

Grails very slow to resolve certain dependencies

1

あなたにも並行してユニットと統合テストを実行するかを選択することができます - 確かに物事をスピードアップすることができますJavaのメモリ/ JVMオプションを増やすこのarticle

1

を参照してください。与えることができるメモリの量は、装置によって異なります。

コマンドラインからgrailsを実行している場合は、GRAILS_OPTSという環境変数を設定します。あなたが実行構成のVM引数にこれを追加する必要がありますGGTS(エクリプス)を使用している場合~/.bash_profile

export GRAILS_OPTS="-Xms3000M -Xmx3000M -XX:PermSize=256m -XX:MaxPermSize=512m" 

にこのような何かを追加します。答えを

-XX:+UseCodeCacheFlushing 
-XX:MaxInlineLevel=15 
-noverify (turns off class validation) 
関連する問題