Советы по улучшению времени компиляции Kotlin/Native
Компилятор Kotlin/Native постоянно обновляется, что улучшает его производительность. С помощью последней версии компилятора Kotlin/Native и правильно настроенной среды сборки вы можете значительно сократить время компиляции своих проектов с Kotlin/Native.
Продолжайте чтение, чтобы узнать наши советы о том, как ускорить процесс компиляции Kotlin/Native.
Общие рекомендации
Используйте последнюю версию Kotlin. Таким образом, вы всегда будете получать последние улучшения производительности.
Избегайте создания огромных классов. Они занимают много времени при компиляции и загрузке во время выполнения.
-
Сохраняйте загруженные и кешированные компоненты между сборками. При компиляции проектов Kotlin/Native загружает необходимые компоненты и кеширует некоторые результаты своей работы в директории
$USER_HOME/.konan. Компилятор использует эту директорию для последующих компиляций, что делает их более быстрыми.При сборке в контейнерах (таких как Docker) или с использованием систем непрерывной интеграции компилятору может потребоваться создать директорию
~/.konanс нуля для каждой сборки. Чтобы избежать этого шага, настройте вашу среду так, чтобы сохранять~/.konanмежду сборками. Например, переопределите её расположение с помощью переменной окруженияKONAN_DATA_DIR.
Настройка Gradle
Первая компиляция с Gradle обычно занимает больше времени, чем последующие, из-за необходимости загрузки зависимостей, построения кэша и выполнения дополнительных шагов. Вы должны собрать свой проект как минимум дважды, чтобы получить точное представление о реальном времени компиляции.
Вот некоторые рекомендации по настройке Gradle для улучшения производительности компиляции:
Увеличьте размер кучи Gradle. Добавьте
org.gradle.jvmargs=-Xmx3gвgradle.properties. Если вы используете параллельную сборку, вам может потребоваться сделать кучу еще больше или выбрать правильное количество потоков с помощьюorg.gradle.parallel.threads.-
Сборка только необходимых бинарных файлов. Не запускайте задачи Gradle, которые собирают весь проект, такие как
buildилиassemble, если это не нужно. Эти задачи собирают один и тот же код несколько раз, увеличивая время компиляции. В типичных случаях, таких как запуск тестов из IntelliJ IDEA или запуск приложения из Xcode, Kotlin-инструменты избегают выполнения ненужных задач.Если у вас нетипичный случай или конфигурация сборки, вам может потребоваться выбрать задачу самостоятельно.
linkDebug*: Для запуска кода во время разработки обычно нужен только один бинарник, поэтому достаточно выполнить соответствующую задачуlinkDebug*. Имейте в виду, что компиляция релизной бинарной сборки (linkRelease*) занимает больше времени, чем компиляция отладочной.-
packForXcode: Поскольку у iOS-симуляторов и устройств разные архитектуры процессоров, распространённым подходом является распространение бинарного файла Kotlin/Native как универсальной (жирной) фреймворка. При локальной разработке быстрее будет собрать.frameworkтолько для используемой платформы.Чтобы собрать фреймворк для конкретной платформы, вызовите задачу
packForXcode, сгенерированную мастером создания проекта Kotlin Multiplatform Mobile.
Не отключайте демона Gradle без веской причины. Kotlin/Native работает из демона Gradle по умолчанию. При его включении используется тот же процесс JVM, и нет необходимости разогревать его для каждой компиляции.
Не используйте transitiveExport = true. Использование transitive export отключает удаление неиспользуемого кода во многих случаях: компилятор должен обработать много неиспользуемого кода. Это увеличивает время компиляции. Используйте
exportявно для экспорта необходимых проектов и зависимостей.-
Используйте кэш сборки Gradle:
Локальный кэш сборки: Добавьте
org.gradle.caching=trueв вашgradle.propertiesили запустите с--build-cacheв командной строке.Удаленный кэш сборки в средах непрерывной интеграции. Узнайте, как настроить удаленный кэш сборки.
Включите ранее отключенные функции Kotlin/Native. Существуют свойства, которые отключают демон Gradle и кэши компилятора -
kotlin.native.disableCompilerDaemon=trueиkotlin.native.cacheKind=none. Если у вас были проблемы с этими функциями ранее, и вы добавили эти строки в свойgradle.propertiesили аргументы Gradle, удалите их и проверьте, выполняется ли сборка успешно. Возможно, эти свойства были добавлены ранее для решения проблем, которые уже исправлены.
Настройка ОС Windows
Настройте безопасность Windows. Безопасность Windows может замедлять компилятор Kotlin/Native. Вы можете избежать этого, добавив директорию
.konan, которая по умолчанию расположена в%USERPROFILE%, в исключения безопасности Windows. Узнайте, как добавить исключения в безопасность Windows.
© 2010–2022 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/native-improving-compilation-time.html