[解決済み】gwtコンパイラを高速化する方法は?
質問
プロジェクトでGWTを多用するようになり、GWTコンパイラのパフォーマンスに悩まされるようになってきた。
GWTコンパイラの実行を後回しにするホストモードブラウザを重視するなど、この問題を軽減するために作業方法の変更を開始する予定ですが、これにはそれなりのリスクがあり、特に実際のブラウザの問題を発見するのがかなり遅れる可能性があります。
理想を言えば、GWTコンパイラ自体をもっと速くしたいですね。かなり小さなアプリケーションのコンパイルに1分もかかるなんて、いい加減にしてほしいです。しかし、私たちは、かなり素朴な方法でコンパイルを使っているので、迅速かつ容易にいくつかの利益を得ることができることを期待しています。
現在、Ant ターゲットから java アプリケーションとして com.google.gwt.dev.Compiler を起動しており、最大ヒープが 256m で、スタックスペースがたくさんあります。コンパイラは、Java6の性能向上を利用するために、fork=trueと最新のJava 6 JREを使用してAntから起動されます。メインコントローラクラスをアプリケーションのクラスパスと一緒にコンパイラに渡すと、実行されます。
他に高速化するためにできることは?より多くの情報を与えて、何をすべきかを発見するのに費やす時間を減らすことはできないでしょうか?
1つのブラウザ用にしかコンパイルしないように指示できるのは知っていますが、マルチブラウザのテストをする必要があるので、それはあまり現実的ではありません。
現時点ではすべての提案を歓迎します。
解決方法は?
GWTのコンパイラの性能は本当にお粗末です。あちこちでハックすることはできますが、大幅にパフォーマンスを向上させることはできません。
パフォーマンスハックとして有効なのは、特定のブラウザのみにコンパイルすることで、次の行を
gwt.xml
:
<define-property name="user.agent" values="ie6,gecko,gecko1_8"></define-property>
またはgwt 2.xの構文で、1つのブラウザにのみ適用されます。
<set-property name="user.agent" value="gecko1_8"/>
これは、例えば、IEとFFのみに対応したアプリケーションをコンパイルします。もし、テストに特定のブラウザしか使わないことがわかっている場合は、この小さなハックを使うことができます。
もうひとつの方法として、複数のロケールを使用していて、テスト用にひとつだけ使用する場合、それらをすべてコメントアウトして、GWTがデフォルトのロケールを使用するようにすれば、コンパイル時の追加オーバーヘッドをいくらか削減することができます。
結論:コンパイラのパフォーマンスが桁違いに向上するわけではありませんが、いくつかの緩和策を取ることで、あちこちで数分の短縮が可能です。
関連
-
[解決済み] Cloneable throws CloneNotSupportedException
-
[解決済み] なぜJPAには@Transientアノテーションがあるのですか?
-
[解決済み] mavenのコンパイルに失敗するのはなぜですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] Eclipseを高速化する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] maven. -source 1.5ではラムダ式がサポートされていません。
-
[解決済み] Java - JTextFieldが空かどうかを確認する
-
[解決済み] Oracle DB : java.sql.SQLException: 閉じた接続
-
[解決済み] プロトコルハンドラの初期化に失敗しました。
-
[解決済み] Java UnknownFormatConversionException
-
[解決済み] 親から継承したメソッドの可視性を下げることができない [重複]。
-
[解決済み] java.util.MissingFormatArgumentException: 形式指定子 '%s' がありません。
-
[解決済み] 1行目2列目でBEGIN_ARRAYを期待したが、BEGIN_OBJECTだった。
-
[解決済み] 文字列の長さに応じて文字列をトリミングする
-
[解決済み] Javaでdoubleをfloatに変換する