为什么Scala的sbt慢?

问题描述 投票:0回答:1

在使用 sbt 时,我在很多地方都面临着缓慢的问题

  1. 在 IntelliJ 中导入 sbt 项目大约需要 8-10 分钟
  2. 在 sbt 项目的 IntelliJ 中建立索引
  3. sbt
    (在终端中,此命令大约需要(2-3 分钟))。
  4. compile
    在 sbt shell 中,此命令大约需要 3-5 分钟。
  5. 每当我修改
    build.sbt
    文件时,项目刷新需要3-4分钟

我需要检查的地方还有很多,但以上指定的点是我经常遇到的。

这个问题与sbt或Scala有关吗?如果是,我该如何解决这个问题?

注意:我的互联网连接良好,所以这不可能是网络问题。

我的 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"
scala sbt
1个回答
7
投票

SBT 很慢,因为编译在 Scala 中完成的内部代码,而 Scala 编译很慢,因为它是一种复杂的语言(但是一旦 Scala 编译后,运行时会快很多)

在 SBT 服务器上使用 SBT 1.x 版本时,您可以增强 SBT 性能。 SBT 服务器允许您仅使用在命令行和 IDE 之间共享的一个 SBT 实例。这非常有用,更多信息在这里:https://www.scala-sbt.org/1.x/docs/sbt-server.html

还可以考虑使用其他更轻量的构建工具,例如 PANTS,它基于 Python,可以解释并且速度更快。更多信息请访问:https://www.pantsbuild.org/

注意:PANTS 文档和社区不像 SBT 那么广泛,但值得尝试,使用 PANTS 可以完成一些令人惊奇的事情。

注意2:如果您的代码库很大,它仍然需要大量时间来编译/构建,因此请考虑将您的代码和工件安排为增量/缓存片段/子项目,以看到真正的提升。

© www.soinside.com 2019 - 2024. All rights reserved.