gradle
Gradle Performance
Sök…
Profilering av en byggnad
Innan du börjar ställa in din Gradle-konstruktion för prestanda bör du fastställa en baslinje och ta reda på vilka delar av byggnaden som tar mest tid. För att göra detta kan du profilera din build genom att lägga till --profile
argumentet i ditt Gradle-kommando:
gradle --profile
./gradlew --profile
När byggandet är klart ser du en HTML-profilrapport för build under ./build/reports/profile/
och ser ut så här:
Genom att klicka på flikarna bredvid Sammanfattning kan du se en mer detaljerad uppdelning av var tiden går.
Konfigurera efterfrågan
Om profileringen av din byggnad visar betydande tid på Konfigurering av projekt kan alternativet Konfigurera efterfrågan förbättra dina resultat.
Du kan aktivera Configure on Demand-läge genom att redigera $GRADLE_USER_HOME/.gradle/gradle.properties
( ~/.gradle/gradle.properties
standard) och ställa org.gradle.configureondemand
.
org.gradle.configureondemand=true
Om du bara gradle.properties
aktivera det för ett specifikt projekt redigerar du projektets gradle.properties
fil istället.
Om Configure on Demand är aktiverat kommer Gradle bara att konfigurera projekt som behövs för uppgiften som körs istället för att konfigurera alla projekt framåt.
Från Gralde Manual :
Konfiguration på begäran-läge försöker konfigurera endast projekt som är relevanta för begärda uppgifter, dvs den kör endast
build.gradle
filen för projekt som deltar i build. På detta sätt kan konfigureringstiden för en stor byggnad för flera projekt reduceras. På lång sikt blir detta läge standardläget, kanske det enda läget för exekvering av Gradle build.
Ställa in JVM-minnesanvändningsparametrar för Gradle
Du kan ställa in eller öka minnesanvändningsgränserna (eller andra JVM-argument) som används för Gradle builds och Gradle Daemon genom att redigera $GRADLE_USER_HOME/.gradle/gradle.properties
( ~/.gradle/gradle.properties
standard) och ställa in org.gradle.jvmargs
.
Om du vill konfigurera dessa gränser endast för ett specifikt projekt redigerar du projektets gradle.properties
fil istället.
Standardinställningarna för minnesanvändning för Gradle builds och Gradle Daemon är:
org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=256m
Detta möjliggör en generell maximal minnesallokering (högstorlek) på 1 GB, och en maximal minnesallokering för permanenta "interna" objekt på 256 MB. När dessa storlekar uppnås inträffar Garbage Collection, vilket kan minska prestandan avsevärt.
Förutsatt att du har minnet att skona, kan du enkelt fördubbla dessa så:
org.gradle.jvmargs=-Xmx2024m -XX:MaxPermSize=512m
Observera att du kommer att sluta se fördelarna med att öka XX:MaxPermSize
förr än när Xmx
ökar sluta bli fördelaktigt.
Använd Gradle Daemon
Du kan aktivera Gradle Daemon för att förbättra prestandan för dina build.
Gradle Daemon håller Gradle Framework initierat och körs och cachar projektdata i minnet för att förbättra prestandan.
För en enda byggnad
För att aktivera Daemon för en enda konstruktion kan du helt enkelt --daemon
argumentet - --daemon
till ditt gradle
kommando eller Gradle Wrapper-skript.
gradle --daemon
./gradlew --daemon
För alla byggnader av ett projekt
För att aktivera Daemon för alla byggningar av ett projekt kan du lägga till:
org.gradle.daemon=true
Till ditt projekts gradle.properties
fil.
För alla byggnader
För att aktivera Gradle Daemon som standard, redigera $GRADLE_USER_HOME/.gradle/gradle.properties
( ~/.gradle/gradle.properties
( ~/.gradle/gradle.properties
standard) för varje byggnad som skapas av ditt användarkonto) och lägg till denna rad:
org.gradle.daemon=true
Du kan också göra detta i ett enda kommando på Mac / Linux / * nix-system:
touch ~/.gradle/gradle.properties && echo "org.gradle.daemon=true" >> ~/.gradle/gradle.properties
Eller på Windows:
(if not exist "%USERPROFILE%/.gradle" mkdir "%USERPROFILE%/.gradle") && (echo org.gradle.daemon=true >> "%USERPROFILE%/.gradle/gradle.properties")
Inaktivera Daemon
Du kan inaktivera Daemon för en specifik byggnad med --no-daemon
, eller inaktivera det för ett specifikt projekt genom att uttryckligen ställa org.gradle.daemon=false
i projektets gradle.properties
fil.
Stoppa Daemon
Om du vill stoppa en Daemon-process manuellt kan du antingen döda processen via din operativsystemuppgiftshanterare eller köra gradle --stop
. --stop
omkopplaren får Gradle att begära att alla kör Daemon-processer, av samma Gradle-version som används för att köra kommandot, avslutar sig själva. Vanligtvis avslutas Daemon-processer automatiskt * efter * 3 timmars inaktivitet eller mindre .
Gradle Parallel bygger
Gradle kör bara en uppgift åt gången som standard, oavsett projektstruktur. Genom att använda --parallel
kan du tvinga Gradle att utföra oberoende delprojekt - de som inte har några implicita eller uttryckliga projektberoende mellan varandra - parallellt, så att den kan köra flera uppgifter samtidigt så länge dessa uppgifter är i olika projekt.
Så här bygger du ett projekt i parallellt läge:
gradle build --parallel
Du kan också göra att bygga parallellt som standard för ett projekt genom att lägga till följande inställning i projektets gradle.properties-fil:
org.gradle.parallel=true
Använd den senaste Gradle-versionen
Gradle-teamet arbetar regelbundet med att förbättra prestandan för olika aspekter av Gradle builds. Om du använder en gammal version av Gradle, missar du fördelarna med detta arbete. Prova att uppgradera till den senaste versionen av Gradle för att se vilken typ av inverkan det har. Det är låg risk eftersom mycket få saker bryter mellan mindre versioner av Gradle.
Egenskapsfilen för Gradle wrapper kan hittas i din projektmapp under gradle/wrapper/
och kallas gradle-wrapper.properties
. Filens innehåll kan se ut så här:
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
Du kan manuellt ändra YYY
XXX
(nuvarande version) till YYY
(nyare version) och nästa gång du kör inslaget laddas den nya versionen ned automatiskt.