Spec-Zone.ru › Kotlin 1.7

Советы по улучшению времени компиляции 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.

      Помните, что в этом случае вам нужно будет очистить сборку с помощью ./gradlew clean после переключения между устройством и симулятором. Подробности см. в этой задаче.

  • Не отключайте демона 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.

Последнее изменение: 06 сентября 2022 г.
Дебаг iOS-отчетов об ошибках Kotlin/Native FAQ

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API