gradle
Gradle Performance
サーチ…
ビルドのプロファイリング
パフォーマンスのためにGradleビルドを調整する前に、ベースラインを確立して、ビルドのどの部分が最も時間を費やしているかを把握する必要があります。これを行うには、Gradleコマンドに--profile
引数を追加してビルドのプロファイルを作成します。
gradle --profile
./gradlew --profile
ビルドが完了すると、ビルドのHTMLプロファイルレポートが./build/reports/profile/
、次のようになります。
[ 要約 ]の横にあるタブをクリックすると、時間がどこで費やされたかをより詳細に分かります。
オンデマンド設定
ビルドプロファイリングでプロジェクトの設定に時間がかかる場合は、オンデマンドで設定するとパフォーマンスが向上する可能性があります。
あなたは編集によってオンデマンドモードに設定を有効にすることができます$GRADLE_USER_HOME/.gradle/gradle.properties
( ~/.gradle/gradle.properties
デフォルトでは)、および設定org.gradle.configureondemand
。
org.gradle.configureondemand=true
特定のプロジェクトに対してのみ有効にするには、代わりにそのプロジェクトのgradle.properties
ファイルを編集します。
オンデマンドで設定を有効にすると、すべてのプロジェクトを前面に設定するのではなく、実行中のタスクに必要なプロジェクトのみを設定します。
Graldeマニュアルから:
オンデマンドモードの設定では、要求されたタスクに関連するプロジェクトのみを設定しようとします。つまり、ビルドに参加しているプロジェクトの
build.gradle
ファイルのみを実行します。このようにして、大規模なマルチプロジェクト構築の構成時間を短縮することができます。長期的には、このモードはデフォルトモードになります。可能であれば、Gradleビルド実行の唯一のモードになります。
Gradle用のJVMメモリー使用量パラメーターのチューニング
$GRADLE_USER_HOME/.gradle/gradle.properties
(デフォルトでは~/.gradle/gradle.properties
)を~/.gradle/gradle.properties
し、 org.gradle.jvmargs
を設定することで、GradleビルドとGradleデーモンに使用されるメモリ使用量制限(またはその他のJVM引数)を設定または増やすことができますorg.gradle.jvmargs
。
これらの制限を特定のプロジェクトに対してのみ設定するには、代わりにそのプロジェクトのgradle.properties
ファイルを編集します。
GradleビルドとGradleデーモンのデフォルトのメモリ使用量の設定は次のとおりです。
org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=256m
これにより、1GBの一般的な最大メモリ割り当て(ヒープサイズ)と256MBの永続的な "内部"オブジェクトに対する最大メモリ割り当てが可能になります。これらのサイズに達すると、ガベージコレクションが発生し、パフォーマンスが大幅に低下する可能性があります。
余裕を持っていると仮定すると、次のように簡単に2倍にすることができます:
org.gradle.jvmargs=-Xmx2024m -XX:MaxPermSize=512m
XX:MaxPermSize
がXmx
増加を上回った場合には、 XX:MaxPermSize
すぐに増加するのを止めることができます。
Gradleデーモンを使用する
Gradle Daemonを有効にすると、ビルドのパフォーマンスが向上します。
Gradleデーモンは、Gradle Frameworkを初期化して実行したままにし、プロジェクトデータをメモリにキャッシュしてパフォーマンスを向上させます。
シングルビルドの場合
単一の構築のためのデーモンを有効にするには、単純に渡すことができ--daemon
あなたに引数をgradle
コマンドやGradleのラッパースクリプト。
gradle --daemon
./gradlew --daemon
プロジェクトのすべてのビルドについて
プロジェクトのすべてのビルドに対してデーモンを有効にするには、次を追加します。
org.gradle.daemon=true
プロジェクトのgradle.properties
ファイル。
すべてのビルド
Gradleデーモンをデフォルトで有効にするには、システム上のユーザーアカウントによって行われたすべてのビルドに対して、 $GRADLE_USER_HOME/.gradle/gradle.properties
(デフォルトで~/.gradle/gradle.properties
)を~/.gradle/gradle.properties
し、次の行を追加します。
org.gradle.daemon=true
また、Mac / Linux / * nixシステムの単一のコマンドでこれを行うこともできます:
touch ~/.gradle/gradle.properties && echo "org.gradle.daemon=true" >> ~/.gradle/gradle.properties
またはWindowsの場合:
(if not exist "%USERPROFILE%/.gradle" mkdir "%USERPROFILE%/.gradle") && (echo org.gradle.daemon=true >> "%USERPROFILE%/.gradle/gradle.properties")
デーモンの無効化
--no-daemon
引数を使用して特定のビルドのデーモンを無効にするか、プロジェクトのgradle.properties
ファイルにorg.gradle.daemon=false
明示的に設定して特定のプロジェクトに対して--no-daemon
無効にすることができます。
デーモンの停止
デーモンプロセスを手動で停止する場合は、オペレーティングシステムのタスクマネージャを使用してプロセスをgradle --stop
するか、 gradle --stop
コマンドを実行します。 --stop
スイッチは、Gradleにコマンドを実行するために使用された同じGradleバージョンの実行中のすべてのDaemonプロセスが終了するように要求します。通常、デーモンプロセスは、* 3時間の非活動があった後に自動的に終了します*。
Gradle Parallelビルド
Gradleは、プロジェクトの構造に関係なく、デフォルトで一度に1つのタスクしか実行しません。 --parallel
スイッチを使用することで、Gradleに、暗黙的または明示的なプロジェクト依存関係のない独立サブプロジェクトを並列に実行させることができます。これらのタスクが存在する限り、複数のタスクを同時に実行できます異なるプロジェクト。
並列モードでプロジェクトをビルドするには:
gradle build --parallel
また、プロジェクトのgradle.propertiesファイルに次の設定を追加することで、プロジェクトのデフォルトを並列に構築することもできます。
org.gradle.parallel=true
最新のGradleバージョンを使用する
Gradleチームは、Gradleビルドのさまざまな側面のパフォーマンスを向上させるために定期的に働いています。旧バージョンのGradleを使用している場合、その作業のメリットを逃してしまいます。 Gradleの最新バージョンにアップグレードして、どのような影響があるか確認してください。そうすることは、Gradleのマイナーバージョン間で非常にわずかな事が起こるため、リスクは低いです。
Gradleラッパーのプロパティーファイルは、プロジェクトフォルダーのgradle-wrapper.properties
gradle/wrapper/
下にあり、 gradle-wrapper.properties
というgradle-wrapper.properties
です。そのファイルの内容は次のようになります。
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-X.X.X.zip
手動でバージョン番号XXX
(現在のバージョン)をYYY
(新しいバージョン)に変更することができます。次にラッパーを実行すると、新しいバージョンが自動的にダウンロードされます。