Советы по оптимизации времени компиляции 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.workers.maxили параметра командной строки--max-workers. Значение по умолчанию — количество процессоров.-
Сборка только необходимых бинарных файлов. Не запускайте задачи Gradle, которые собирают весь проект, такие как
buildилиassemble, если вы не нуждаетесь в этом. Эти задачи собирают один и тот же код несколько раз, увеличивая время компиляции. В типичных случаях, таких как запуск тестов из IntelliJ IDEA или запуск приложения из Xcode, Kotlin tooling избегает выполнения ненужных задач.Если у вас нестандартный случай или конфигурация сборки, вам может потребоваться выбрать задачу самостоятельно.
linkDebug*: Для запуска кода в процессе разработки вам обычно нужен только один бинарный файл, поэтому запуск соответствующей задачиlinkDebug*должно быть достаточно. Имейте в виду, что компиляция релизной бинарной версии (linkRelease*) занимает больше времени, чем компиляция отладочной.-
packForXcode: Поскольку у iOS-симуляторов и устройств разные архитектуры процессоров, распространенным подходом является распространение бинарного файла Kotlin/Native в виде универсального (fat) фреймворка. Во время локальной разработки будет быстрее собрать.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 Security.
© 2010–2023 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