サーチ…


ビルドのプロファイリング

パフォーマンスのためにGradleビルドを調整する前に、ベースラインを確立して、ビルドのどの部分が最も時間を費やしているかを把握する必要があります。これを行うには、Gradleコマンドに--profile引数を追加してビルドのプロファイルを作成します。

gradle --profile
./gradlew --profile

ビルドが完了すると、ビルドのHTMLプロファイルレポートが./build/reports/profile/ 、次のようになります。

HTMLプロファイルレポートの例

[ 要約 ]の横にあるタブをクリックすると、時間がどこで費やされたかをより詳細に分かります。

オンデマンド設定

ビルドプロファイリングでプロジェクトの設定に時間がかかる場合は、オンデマンドで設定するとパフォーマンスが向上する可能性があります。

あなたは編集によってオンデマンドモードに設定を有効にすることができます$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:MaxPermSizeXmx増加を上回った場合には、 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 (新しいバージョン)に変更することができます。次にラッパーを実行すると、新しいバージョンが自動的にダウンロードされます。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow