Большое время компиляции кода Kotlin в IntelliJ

Я использовал Kotlin с последней версией Eclipse в течение 2 месяцев без каких-либо проблем с производительностью на моем компьютере с Windows 10 . Теперь я хотел бы сделать живую сессию кодирования о Kotlin с intelliJ (так как это язык JetBrains …), который я только что установил и никогда не использовал раньше, на недавнем компьютере OSX . Эти два компьютера имеют хорошее оборудование и не ограничивают мои тесты.

Моя проблема в том, что каждый раз, когда в моем коде Kotlin есть модификация, время компиляции составляет от 8 секунд до 35 секунд . Я выполнил свои тесты по минималистскому коду:

class TestKotlin { var a = 1 } 

Если я изменю переменную «a», и поэтому ее нужно снова создать, для завершения компиляции всегда нужно 8 секунд в лучших случаях.

Поскольку я хочу сделать сеанс живой кодировки с множеством небольших функций и компиляций, такая задержка слишком значительна. Зрителям нужно будет много ждать, чтобы увидеть результаты в каждой компиляции, они логически ожидают хорошей производительности от инструмента IntelliJ.

В том же проекте я попытался сделать тот же класс Java (с одним атрибутом) и изменить его атрибут, чтобы вызвать компиляцию, и для компиляции требуется менее 1 секунды .

Я попытался вручную скомпилировать код в командной строке :

 kotlinc hello.kt -include-runtime -d hello.jar java -jar hello.jar 

У меня было приличное время компиляции, даже если это было около 3 секунд .

Когда я смотрю на экран «Сообщения» в IntelliJ, когда он компилирует код Котлина, я вижу это:

 Information:Kotlin: Kotlin JPS plugin version 1.0.6-release-127 Information:Kotlin: Using kotlin-home = /Users/myUsername/Library/Application Support/IntelliJIdea2016.3/Kotlin/kotlinc 

Он останавливается здесь для всего времени компиляции, а затем делает почти мгновенно следующие шаги:

 Information:Kotlin: Kotlin Compiler version 1.0.6-release-127 Information:17/01/17 11:38 - Compilation completed successfully in 11s 639ms 

Возможно, в конфигурации IntelliJ есть проблема или что-то в этом роде. Мне было трудно найти что-то, что могло бы улучшить выступления, но мне ничего не помогло …

Я был бы очень благодарен, если кто-то может помочь мне получить некоторое реалистичное время компиляции с Kotlin в Intellij, как в Eclipse!

Это похоже на проблему KT-15491 .

Чтобы убедиться, что это ваш случай, попробуйте выполнить следующую простую программу Kotlin:

 import java.io.File import kotlin.system.measureNanoTime fun main(args: Array<String>) { val elapsedNs = measureNanoTime { File.createTempFile("tmp", "", null).deleteOnExit() } println(elapsedNs.toDouble() / 1000000000) } 

Если печатное истекшее время значительно превышает долю секунды, это и есть причина.

Эта проблема затрагивает не только компилятор Kotlin, но и все JVM-программы, которые пытаются создать временный файл или выполнять любые другие действия с SecureRandom класса SecureRandom .

Я испытал такое же замедление на каждой JPS-сборке на своем ноутбуке Windows 7. Я пробовал обходное решение с порядком поставщиков безопасности, описанным в этом вопросе, и это помогло.

Убедитесь, что вы установили эти поля в настройках:

  • Инкрементальная компиляция Котлина
  • Демон компилятора Kotlin (поддерживает процесс kotlinc)