Почему Scala s-SBT слишком медленный

Я сталкиваюсь с медлительностью во многих местах, работая с sbt

  • Импорт проекта SBT в Intellij - приблизительно (8-10 минут).
  • Индексирование в Intellij проекта SBT.
  • sbt (В терминале эта команда занимает приблизительно (2-3 минуты)).
  • compile (В sbt-оболочке эта команда занимает примерно (3-5 минут)).
    5. Когда я изменяю файл build.sbt, тогда обновление проекта занимает 3-4 мин.

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

Связана ли эта проблема с SBT или Scala?, Если да Как разрешить один и тот же

Примечание. У меня хорошее подключение к Интернету, поэтому это не может быть проблемой сети.

My Scala Файл класса:

import org.scalatest._

class TaskManagerSpec extends FlatSpec with Matchers {

  "An empty tasks list" should "have 0 tasks due today" in {
    val tasksDueToday = TaskManager.allTasksDueToday(List())
    tasksDueToday should have length 0
  }

}

build.sbt

name := "tasky"
version := "0.1.0"
scalaVersion := "2.11.6"
resolvers += "Artima Maven Repository" at "http://repo.artima.com/releases"
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.0" % "test"

Ответ 1

SBT медленный, потому что компилирует внутренний код, который выполняется в Scala и Scala, компиляция является медленной, потому что это сложный язык (но как только Scala скомпилирован во время выполнения намного быстрее)

Вы можете дать SBT повышение при использовании версии SBT 1.x с сервером SBT. Сервер SBT позволяет использовать только один экземпляр SBT, совместно используемый между командной строкой и IDE. Это очень полезно, более подробно здесь: https://www.scala-sbt.org/1.x/docs/sbt-server.html

Также используются другие инструменты сборки, которые легче, такие как PANTS, которые основаны на Python, который интерпретируется и намного быстрее. Дополнительная информация: https://www.pantsbuild.org/

ПРИМЕЧАНИЕ. Документация PANTS и сообщество не такие обширные, как с SBT, но стоит попробовать, есть замечательные вещи, которые можно сделать с помощью PANTS.

ПРИМЕЧАНИЕ 2. Если ваша база кода является большой, все равно потребуется много времени для компиляции/сборки, поэтому необходимо упорядочить код и артефакты как инкрементные/кэшированные фрагменты/подпроекты, чтобы увидеть реальный импульс.