web-dev-qa-db-ja.com

ビルドのGradleとBazelのパフォーマンス

だから、今では誰もがバゼルについて話していますが、それへの移行は自動化されていません(Mavenから移行する場合は、この点でGradleの方が優れています)。したがって、リポジトリを手動で変換することに時間を費やしたくありません。

しかし、gradleの最近のバージョン(5.6>)とbazel(1.0)の間のビルド速度の違いに関する情報は見つかりません。

誰かがリンクや自分の経験を共有できますか?私は主に、いくつかのファイルが変更されたインクリメンタルビルドに関心があります。

5
user1685095

さて、私は〜= 100 = 000 locのJava=を含むクローズドソースプロジェクトをbazelに移行しました。

Gradle 5.6. vs bazel 1.0.1

ダウンロードの依存関係のステップとコンパイルのステップを区別する方法がわからないため、クリーンビルドを測定できませんでした。それでも、この使用例については十分に気にしていません。すでに述べたように、私の関心は開発者の生産性にあり、したがって増分ビルドにあります。

私はビルドで次のバゼルを使用したので、実際に保守可能であるとは考えておらず、多くの開発者がいる大企業を除く誰もがそれを使用できるため、最も詳細なアプローチは使用していません。とにかく、私はバゼルの欠点としてビルド速度を向上させるために手動でこれを行う必要があるという事実を見ています。

Java_binary(
    srcs = glob(["src/main/Java/**/*.Java"]),
    resources = glob(["src/main/resources/**"]),
    ...
)

1つまたは2つの変更されたファイルを使用した増分ビルド

グラドル-1s、バゼル-4.227s

私はそれを何度も試しましたが、その都度、gradleは大幅に高速でした。 1つまたは2つ以上のファイルが変更されたとき、私はインクリメンタルビルドをテストしていません。そのシナリオでは、bazelはgradleと同じか、それより高速になるでしょう。

No op build gradle-700ms、bazel-.090ms

したがって、速度の点で優れたGradleは、開発者の生産性の勝者のようです。 Bazelの場合、gradleでより安全なデフォルト(エラーが発生しやすいのはデフォルトでオンになっています)を自分で有効にする必要があります。

0
user1685095