6

プロジェクト (約 15 の個別のプロジェクト - EJB、Web など) で Lombok を使用すると、Lombok によってビルド プロセスが約 2 ~ 3 倍遅くなります。これに対する解決策はありますか、それとも Lombok の欠点ですか?

プロジェクトのサイズを見るだけで、約 400 @Getter、 120 @Data、 250 @Setter、および 100@EqualsAndHashCodeです。

環境: IBM Rational Application Developer 8.0.4 と最新バージョンの Lombok (0.11.6)

それをより速くするためのアイデアはありますか?

4

2 に答える 2

8

最後に、ロンボクを非常に高速化するエッジビルドが利用可能です! 彼らはそれをスピードアップするために多くの仕事をしました、それは今私にとってはうまくいきます. ビルド時間はほぼ半分になり、ファイルを保存するたびに待つ必要がなくなりました。

また、速度を比較するためにプロジェクトをデロンボクしましたが、デロンボクしたコードとロンボク アノテーションを使用したコードとの間に大きな違いはありません。

ここでエッジビルドをダウンロードできます: http://projectlombok.org/download-edge.html

于 2013-04-11T08:48:41.087 に答える
8

Lombok は注釈プロセッサ (必要に応じてコンパイラ プラグイン) です。コンパイル時に、特定の一連の注釈がコード内で見つかるたびに呼び出され、新しいソースを生成したり、コンパイラ エラーをスローしたりする機会が与えられます。コンパイル ラウンド中に何か新しいものが生成された場合、すべてが正常にコンパイルされるまで、別のラウンドを実行する必要があります。そのため、注釈を見つけて、必要に応じて処理し (以下を参照)、追加のコンパイル ラウンドを実行するには時間がかかります。

Annotation プロセッサの仕様では、既存のコードを変更することを明示的に禁止しています。新しいクラスや追加のファイル (.properties など) を作成することはできますが、既存のコードを変更することはできません。Lombok は、使用されているコンパイラを検出し、その内部 API をハッキングしてメモリ内の AST を変更し、アクセサなどを追加することで、これを回避します。これはただ...ひどいです。

そして、これは私の意見では、主要な技術的リスクです。最終的に、Lombok は IDE が実行できないことは何もしません - アクセサーを生成するなどですが、プロジェクト全体を危険にさらす可能性があります。コンパイルしないコード (または、あなたの場合は非常に遅いコンパイル) になってしまい、コードに数行を追加する以外は害を及ぼさないボイラープレート メソッドを非表示にするだけです。しかし、それは私の意見です:)

問題に戻ると、Lombok を完全に削除する以外に、コンパイル時間を短縮する方法がわかりません。

于 2013-03-20T09:42:40.073 に答える