gradle
Gradle Performance
Ricerca…
Creazione di profili di una build
Prima di iniziare a sintonizzare la build di Gradle per le prestazioni, dovresti stabilire una linea di base e capire quali parti della build impiegano più tempo. Per fare ciò, puoi profilare la tua build aggiungendo l'argomento --profile
al comando Gradle:
gradle --profile
./gradlew --profile
Al termine della compilazione, verrà visualizzato un report del profilo HTML per la compilazione in ./build/reports/profile/
, con un aspetto simile al seguente:
Facendo clic sulle schede accanto a Riepilogo , è possibile visualizzare una ripartizione più dettagliata di dove viene speso il tempo.
Configura su richiesta
Se la creazione di profili della build mostra un notevole dispendio di tempo in Configurazione progetti , l'opzione Configura su richiesta potrebbe migliorare le prestazioni.
È possibile abilitare la modalità Configura su richiesta modificando $GRADLE_USER_HOME/.gradle/gradle.properties
( ~/.gradle/gradle.properties
per impostazione predefinita) e impostando org.gradle.configureondemand
.
org.gradle.configureondemand=true
Per abilitarlo solo per un progetto specifico, modifica invece il file gradle.properties
quel progetto.
Se Configura su richiesta è abilitato, anziché configurare tutti i progetti in primo piano, Gradle configurerà solo i progetti necessari per l'attività da eseguire.
Dal manuale di Gralde :
La modalità di configurazione on demand tenta di configurare solo i progetti rilevanti per le attività richieste, ovvero esegue solo il file
build.gradle
dei progetti che partecipano alla generazione. In questo modo, è possibile ridurre il tempo di configurazione di una grande build multi-progetto. A lungo termine, questa modalità diventerà la modalità predefinita, probabilmente l'unica modalità per l'esecuzione di build di Gradle.
Ottimizzazione dei parametri di utilizzo della memoria JVM per Gradle
È possibile impostare o aumentare i limiti di utilizzo della memoria (o altri argomenti JVM) usati per le build Gradle e il demone Gradle modificando $GRADLE_USER_HOME/.gradle/gradle.properties
( ~/.gradle/gradle.properties
per impostazione predefinita) e impostando org.gradle.jvmargs
.
Per configurare questi limiti solo per un progetto specifico, modifica invece il file gradle.properties
quel progetto.
Le impostazioni di utilizzo della memoria predefinite per build Gradle e Demone Gradle sono:
org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=256m
Ciò consente un'allocazione di memoria massima generale (dimensione heap) di 1 GB e un'allocazione di memoria massima per oggetti "interni" permanenti di 256 MB. Quando vengono raggiunte queste dimensioni, si verifica Garbage Collection, che può ridurre significativamente le prestazioni.
Supponendo che tu abbia la memoria di riserva, potresti facilmente raddoppiarli in questo modo:
org.gradle.jvmargs=-Xmx2024m -XX:MaxPermSize=512m
Nota che smetterai di vedere i benefici derivanti dall'aumento di XX:MaxPermSize
prima di quando Xmx
aumenta e diventa Xmx
.
Usa il demone Gradle
Puoi abilitare il demone Gradle per migliorare le prestazioni delle tue build.
Il demone Gradle mantiene il Gradle Framework inizializzato e funzionante, e memorizza nella cache i dati del progetto in memoria per migliorare le prestazioni.
Per una singola costruzione
Per abilitare il demone per una singola build, è sufficiente passare l'argomento --daemon
al comando gradle
o allo script Gradle Wrapper.
gradle --daemon
./gradlew --daemon
Per tutte le build di un progetto
Per abilitare il demone per tutte le build di un progetto, puoi aggiungere:
org.gradle.daemon=true
Al file gradle.properties
del progetto.
For All Builds
Per abilitare il demone Gradle per impostazione predefinita, per ogni build creata dal tuo account utente sul tuo sistema, modifica $GRADLE_USER_HOME/.gradle/gradle.properties
( ~/.gradle/gradle.properties
per impostazione predefinita) e aggiungi questa riga:
org.gradle.daemon=true
Puoi anche farlo in un singolo comando su sistemi Mac / Linux / * nix:
touch ~/.gradle/gradle.properties && echo "org.gradle.daemon=true" >> ~/.gradle/gradle.properties
Oppure su Windows:
(if not exist "%USERPROFILE%/.gradle" mkdir "%USERPROFILE%/.gradle") && (echo org.gradle.daemon=true >> "%USERPROFILE%/.gradle/gradle.properties")
Disabilitare il demone
È possibile disabilitare il daemon per una build specifica utilizzando l'argomento --no-daemon
o disattivarlo per un progetto specifico impostando esplicitamente org.gradle.daemon=false
nel file gradle.properties
del progetto.
Fermare il demone
Se si desidera interrompere manualmente un processo Daemon, è possibile interrompere il processo tramite il task manager del sistema operativo o eseguire il comando gradle --stop
. L' --stop
fa in modo che Gradle richieda che tutti i processi di Daemon in esecuzione, della stessa versione di Gradle utilizzata per eseguire il comando, si interrompano. Normalmente, i processi demone terminano automaticamente * dopo * 3 ore di inattività o meno .
Gradle Parallel costruisce
Gradle eseguirà solo un'attività alla volta per impostazione predefinita, indipendentemente dalla struttura del progetto. Usando l' --parallel
, puoi forzare Gradle ad eseguire sottoprogetti indipendenti - quelli che non hanno dipendenze tra progetti implicite o esplicite tra di loro - in parallelo, permettendogli di eseguire più attività contemporaneamente fintantoché quelle attività sono in diversi progetti.
Per costruire un progetto in modalità parallela:
gradle build --parallel
È anche possibile creare in parallelo l'impostazione predefinita per un progetto aggiungendo la seguente impostazione al file gradle.properties del progetto:
org.gradle.parallel=true
Usa l'ultima versione di Gradle
Il team di Gradle lavora regolarmente per migliorare le prestazioni dei diversi aspetti delle build di Gradle. Se stai usando una vecchia versione di Gradle, stai perdendo i benefici di quel lavoro. Prova ad aggiornare all'ultima versione di Gradle per vedere che tipo di impatto ha. Fare così è a basso rischio perché pochissime cose si interrompono tra versioni minori di Gradle.
Il file delle proprietà per il wrapper Gradle può essere trovato nella cartella del progetto sotto gradle/wrapper/
e si chiama gradle-wrapper.properties
. Il contenuto di quel file potrebbe assomigliare a questo:
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
È possibile modificare manualmente il numero di versione XXX
(versione corrente) su YYY
(versione più recente) e la volta successiva che si esegue il wrapper, la nuova versione viene scaricata automaticamente.