gradle
Wydajność stopniowa
Szukaj…
Profilowanie kompilacji
Zanim zaczniesz dostrajać kompilację Gradle pod kątem wydajności, powinieneś ustalić linię bazową i dowiedzieć się, które części kompilacji zajmują najwięcej czasu. Aby to zrobić, możesz profilować swoją kompilację , dodając argument --profile
do polecenia Gradle:
gradle --profile
./gradlew --profile
Po zakończeniu kompilacji zobaczysz raport profilu HTML dla kompilacji w ./build/reports/profile/
, wyglądający mniej ./build/reports/profile/
tak:
Klikając karty obok Podsumowanie , możesz zobaczyć bardziej szczegółowy podział miejsca spędzonego czasu.
Konfiguruj na żądanie
Jeśli profilowanie kompilacji wskazuje na znaczne poświęcenie czasu na konfigurowanie projektów , opcja Konfiguruj na żądanie może poprawić wydajność.
Możesz włączyć tryb Konfiguruj na żądanie, edytując $GRADLE_USER_HOME/.gradle/gradle.properties
( $GRADLE_USER_HOME/.gradle/gradle.properties
~/.gradle/gradle.properties
) i ustawiając org.gradle.configureondemand
.
org.gradle.configureondemand=true
Aby włączyć go tylko dla określonego projektu, edytuj plik gradle.properties
tego projektu.
Jeśli opcja Konfiguruj na żądanie jest włączona, zamiast konfigurować wszystkie projekty z góry, Gradle będzie konfigurować tylko projekty potrzebne do uruchomienia zadania.
Tryb konfiguracji na żądanie próbuje skonfigurować tylko projekty odpowiednie dla żądanych zadań, tj.
build.gradle
plikbuild.gradle
projektów, które uczestniczą w kompilacji. W ten sposób można skrócić czas konfiguracji dużej kompilacji złożonej z wielu projektów. W dłuższej perspektywie tryb ten stanie się trybem domyślnym, być może jedynym trybem wykonywania kompilacji Gradle.
Dostrajanie parametrów wykorzystania pamięci JVM dla Gradle
Możesz ustawić lub zwiększyć limity wykorzystania pamięci (lub inne argumenty JVM) używane dla kompilacji Gradle i demona Gradle, edytując $GRADLE_USER_HOME/.gradle/gradle.properties
( $GRADLE_USER_HOME/.gradle/gradle.properties
~/.gradle/gradle.properties
) i ustawiając org.gradle.jvmargs
.
Aby skonfigurować te limity tylko dla określonego projektu, dokonaj edycji pliku gradle.properties
tego projektu.
Domyślne ustawienia użycia pamięci dla kompilacji Gradle i demona Gradle to:
org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=256m
Pozwala to na ogólny maksymalny przydział pamięci (wielkość sterty) 1 GB i maksymalny przydział pamięci dla stałych „wewnętrznych” obiektów 256 MB. Po osiągnięciu tych rozmiarów następuje odśmiecanie, co może znacznie obniżyć wydajność.
Zakładając, że masz pamięć do stracenia, możesz łatwo podwoić je w następujący sposób:
org.gradle.jvmargs=-Xmx2024m -XX:MaxPermSize=512m
Pamiętaj, że przestaniesz widzieć korzyści wynikające ze zwiększenia XX:MaxPermSize
wcześniej niż gdy wzrost Xmx
przestanie być korzystny.
Użyj demona Gradle
Możesz włączyć Demona Gradle, aby poprawić wydajność swoich kompilacji.
Demon Gradle utrzymuje inicjalizację i działanie środowiska Gradle Framework oraz buforuje dane projektu w pamięci w celu poprawy wydajności.
Dla jednego kompilacji
Aby włączyć demona dla pojedynczej kompilacji, możesz po prostu przekazać argument --daemon
do polecenia gradle
lub skryptu Gradle Wrapper.
gradle --daemon
./gradlew --daemon
Dla wszystkich wersji projektu
Aby włączyć Daemona dla wszystkich wersji projektu, możesz dodać:
org.gradle.daemon=true
Do pliku gradle.properties
twojego projektu.
Dla wszystkich wersji
Aby domyślnie włączyć Demona Gradle, dla każdej kompilacji utworzonej przez konto użytkownika w systemie edytuj $GRADLE_USER_HOME/.gradle/gradle.properties
( $GRADLE_USER_HOME/.gradle/gradle.properties
~/.gradle/gradle.properties
) i dodaj ten wiersz:
org.gradle.daemon=true
Możesz to również zrobić za pomocą jednego polecenia w systemach Mac / Linux / * nix:
touch ~/.gradle/gradle.properties && echo "org.gradle.daemon=true" >> ~/.gradle/gradle.properties
Lub w systemie Windows:
(if not exist "%USERPROFILE%/.gradle" mkdir "%USERPROFILE%/.gradle") && (echo org.gradle.daemon=true >> "%USERPROFILE%/.gradle/gradle.properties")
Wyłączanie demona
Możesz wyłączyć demona dla konkretnej kompilacji za pomocą argumentu --no-daemon
lub wyłączyć go dla konkretnego projektu, ustawiając jawnie org.gradle.daemon=false
w pliku gradle.properties
projektu.
Zatrzymywanie demona
Jeśli chcesz ręcznie zatrzymać proces demona, możesz go zabić za pomocą menedżera zadań systemu operacyjnego lub uruchomić polecenie gradle --stop
. Przełącznik --stop
powoduje, że Gradle żąda, aby wszystkie działające procesy Daemona tej samej wersji Gradle, z której uruchomiono polecenie, zakończyły się. Zazwyczaj procesy Daemona kończą się automatycznie * po * 3 godzinach bezczynności lub mniej .
Kompilacje Gradle Parallel
Gradle domyślnie uruchamia tylko jedno zadanie na raz, niezależnie od struktury projektu. Używając przełącznika - --parallel
, możesz zmusić Gradle do wykonywania niezależnych podprojektów - tych, które nie mają żadnych ukrytych lub jawnych zależności między projektami - równolegle, umożliwiając mu uruchamianie wielu zadań jednocześnie, dopóki te zadania są w różne projekty.
Aby zbudować projekty w trybie równoległym:
gradle build --parallel
Możesz również ustawić równoległe budowanie jako domyślne dla projektu, dodając następujące ustawienie do pliku gradle.properties projektu:
org.gradle.parallel=true
Użyj najnowszej wersji Gradle
Zespół Gradle regularnie pracuje nad poprawą wydajności różnych aspektów kompilacji Gradle. Jeśli korzystasz ze starej wersji Gradle, tracisz korzyści płynące z tej pracy. Spróbuj zaktualizować do najnowszej wersji Gradle, aby zobaczyć, jaki to ma wpływ. Jest to niskie ryzyko, ponieważ bardzo mało rzeczy rozbija się między mniejszymi wersjami Gradle.
Plik właściwości opakowania Gradle znajduje się w folderze projektu w gradle/wrapper/
i nazywa się gradle-wrapper.properties
. Zawartość tego pliku może wyglądać następująco:
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
Możesz ręcznie zmienić numer wersji XXX
(bieżąca wersja) na YYY
(nowsza wersja), a przy następnym uruchomieniu opakowania nowa wersja zostanie pobrana automatycznie.