22

SBT 是否使用 fsc?

出于测试目的,我正在一台相当慢的 Ubuntu 机器(Atom N270)上编译一个 500 行的程序。三个连续的编译时间是 77s、66s 和 66s。

fsc然后我从命令行编译了文件。现在我的时代是 80 岁、25 岁、18 岁。更好的!这对我来说意味着 sbt没有使用fsc. 我对吗?如果是这样,它为什么不使用它?

我可能会尝试让 sbt 显式使用 fsc 进行编译,但我不确定我会弄清楚配置。有人做过吗?

4

4 回答 4

21

这次讨论让我意识到我一直在使用sbt错误的方式。

而不是(从命令行):

$ sbt compile
$ sbt test

..one 应该继续sbt运行并将其视为命令提示符。

$ sbt
> compile
  ...
> test

它具有命令历史记录,甚至能够返回操作系统命令行。我为像我这样的其他人(来自 Makefile 的心态)写了这个“答案”,他们可能没有意识到我们吃药完全错了。:)

(不过,它仍然很慢。)

于 2012-10-18T16:07:54.457 回答
12

当您以交互方式运行它时(使用或不使用其连续构建模式),SBT 无法从 Fast Scala 编译器中受益,因为 Scala 编译器类已加载并被“预热”和 JIT-ed,这是 Scala 的全部fsc优势。

于 2010-09-02T15:00:04.643 回答
2

至少对于 SBT 0.7.x,作者解释说它不如 fsc 快,后者缓存编译器实例(包括加载的库),而不仅仅是 JITted 编译器类:

http://code.google.com/p/simple-build-tool/wiki/ChangeDetectionAndTesting

我的经验也证实 fsc 对于完整编译来说更快,但不会自动选择要重新编译的内容。

对于 SBT 0.10,我找不到关于这个问题的任何文档。

于 2011-08-09T01:59:07.207 回答
0

你不再需要这样做了。Sbt 现在有自己的方式:

于 2014-12-17T15:33:43.603 回答