Почему 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. Если ваша база кода является большой, все равно потребуется много времени для компиляции/сборки, поэтому необходимо упорядочить код и артефакты как инкрементные/кэшированные фрагменты/подпроекты, чтобы увидеть реальный импульс.