gradle
Rendimiento Gradle
Buscar..
Perfilando una construcción
Antes de comenzar a ajustar su compilación de Gradle para el rendimiento, debe establecer una línea de base y determinar qué partes de la compilación tardan más tiempo. Para hacer esto, puede crear un perfil de su compilación agregando el argumento --profile
a su comando de Gradle:
gradle --profile
./gradlew --profile
Una vez completada la compilación, verá un informe de perfil HTML para la compilación en ./build/reports/profile/
, que se ve algo así:
Al hacer clic en las pestañas junto a Resumen , puede ver un desglose más detallado de dónde se gasta el tiempo.
Configurar bajo demanda
Si la creación de perfiles de su compilación muestra un tiempo considerable en la configuración de proyectos , la opción Configurar a pedido puede mejorar su rendimiento.
Puede habilitar el modo Configurar a petición editando $GRADLE_USER_HOME/.gradle/gradle.properties
( ~/.gradle/gradle.properties
de manera predeterminada) y configurando org.gradle.configureondemand
.
org.gradle.configureondemand=true
Para habilitarlo solo para un proyecto específico, edite el archivo gradle.properties
ese proyecto.
Si Configurar a petición está habilitado, en lugar de configurar todos los proyectos por adelantado, Gradle solo configurará los proyectos que sean necesarios para la tarea que se está ejecutando.
Del manual de Gralde :
El modo de configuración bajo demanda intenta configurar solo los proyectos que son relevantes para las tareas solicitadas, es decir, solo ejecuta el archivo
build.gradle
de los proyectos que participan en la compilación. De esta manera, se puede reducir el tiempo de configuración de una gran compilación de varios proyectos. A largo plazo, este modo se convertirá en el modo predeterminado, posiblemente el único modo para la ejecución de la compilación de Gradle.
Ajuste de los parámetros de uso de memoria JVM para Gradle
Puede establecer o aumentar los límites de uso de la memoria (u otros argumentos de JVM) utilizados para las compilaciones de Gradle y el Daemon de Gradle editando $GRADLE_USER_HOME/.gradle/gradle.properties
( ~/.gradle/gradle.properties
de forma predeterminada) y configurando org.gradle.jvmargs
.
Para configurar estos límites solo para un proyecto específico, edite el archivo gradle.properties
ese proyecto.
La configuración de uso de memoria predeterminada para las compilaciones de Gradle y el Daemon de Gradle son:
org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=256m
Esto permite una asignación de memoria máxima general (tamaño de pila) de 1 GB, y una asignación de memoria máxima para objetos "internos" permanentes de 256 MB. Cuando se alcanzan estos tamaños, se produce la recolección de basura, lo que puede disminuir significativamente el rendimiento.
Suponiendo que tenga memoria de sobra, fácilmente podría duplicar esto así:
org.gradle.jvmargs=-Xmx2024m -XX:MaxPermSize=512m
Tenga en cuenta que dejará de ver el beneficio de aumentar XX:MaxPermSize
antes que cuando Xmx
aumente, deje de ser beneficioso.
Usa el Daemon Gradle
Puede habilitar el Daemon de Gradle para mejorar el rendimiento de sus construcciones.
El Daemon de Gradle mantiene el Marco de Gradle inicializado y en ejecución, y almacena los datos del proyecto en la memoria para mejorar el rendimiento.
Para una sola construcción
Para habilitar el demonio para una sola construcción, puede simplemente pasar el --daemon
argumento para su gradle
de comandos o script Gradle Envoltura.
gradle --daemon
./gradlew --daemon
Para todas las construcciones de un proyecto
Para habilitar el Daemon para todas las compilaciones de un proyecto, puede agregar:
org.gradle.daemon=true
Al archivo gradle.properties
su proyecto.
Para todas las construcciones
Para habilitar el Daemon de Gradle de manera predeterminada, para cada compilación realizada por su cuenta de usuario en su sistema, edite $GRADLE_USER_HOME/.gradle/gradle.properties
( ~/.gradle/gradle.properties
de manera predeterminada) y agregue esta línea:
org.gradle.daemon=true
También puede hacer esto en un solo comando en sistemas Mac / Linux / * nix:
touch ~/.gradle/gradle.properties && echo "org.gradle.daemon=true" >> ~/.gradle/gradle.properties
O en Windows:
(if not exist "%USERPROFILE%/.gradle" mkdir "%USERPROFILE%/.gradle") && (echo org.gradle.daemon=true >> "%USERPROFILE%/.gradle/gradle.properties")
Deshabilitando el daemon
Puede deshabilitar el Daemon para una construcción específica usando el argumento --no-daemon
, o deshabilitarlo para un proyecto específico estableciendo explícitamente org.gradle.daemon=false
en el archivo gradle.properties
del proyecto.
Parando el daemon
Si desea detener un proceso Daemon manualmente, puede detener el proceso a través del administrador de tareas de su sistema operativo o ejecutar el comando gradle --stop
. El interruptor --stop
hace que Gradle solicite que todos los procesos Daemon en ejecución, de la misma versión de Gradle utilizada para ejecutar el comando, terminen ellos mismos. Normalmente, los procesos de Daemon terminarán automáticamente * después de * 3 horas de inactividad o menos .
Gradle construcciones paralelas
Gradle solo ejecutará una tarea a la vez de forma predeterminada, independientemente de la estructura del proyecto. Al usar el interruptor --parallel
, puede forzar a Gradle a ejecutar subproyectos independientes, aquellos que no tienen dependencias implícitas o explícitas entre proyectos, en paralelo, lo que le permite ejecutar múltiples tareas al mismo tiempo, siempre y cuando esas tareas estén en diferentes proyectos.
Para construir un proyecto en modo paralelo:
gradle build --parallel
También puede hacer que la construcción en paralelo sea la predeterminada para un proyecto agregando la siguiente configuración al archivo gradle.properties del proyecto:
org.gradle.parallel=true
Usa la última versión de Gradle
El equipo de Gradle trabaja regularmente para mejorar el rendimiento de diferentes aspectos de las construcciones de Gradle. Si está utilizando una versión antigua de Gradle, está perdiendo los beneficios de ese trabajo. Intente actualizar a la última versión de Gradle para ver qué tipo de impacto tiene. Hacer esto es bajo riesgo porque muy pocas cosas se rompen entre versiones menores de Gradle.
El archivo de propiedades para el reiniciador de Gradle se puede encontrar en la carpeta de su proyecto en gradle/wrapper/
y se llama gradle-wrapper.properties
. El contenido de ese archivo podría verse así:
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
Puede cambiar manualmente el número de versión XXX
(versión actual) a YYY
(versión más reciente) y la próxima vez que ejecute el contenedor, la nueva versión se descargará automáticamente.