SBT是否使用快速Scala编译器(fsc)?

时间:2010-09-02 07:22:02

标签: scala sbt

SBT是否使用了fsc?

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

然后我从命令行用fsc编译了该文件。现在我的时间是80年代,25年代,18年代。更好!这意味着我使用fsc 。我对吗?如果是这样,为什么不使用呢?

我可能会尝试让sbt明确使用fsc进行编译,但我不确定我是否会找出配置。有没有人这样做过?

4 个答案:

答案 0 :(得分:21)

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

而不是(从命令行):

$ sbt compile
$ sbt test

..应该保持sbt运行并将其视为命令提示符。

$ sbt
> compile
  ...
> test

它具有命令历史记录甚至能够重新进入OS命令行。我为像我这样的人(来自Makefile思维模式)写了这个“答案”,这可能没有意识到我们错了。 :)

(但它仍然很慢。)

答案 1 :(得分:12)

当您以交互方式运行它时(使用或不使用其连续构建模式),SBT无法从快速Scala编译器中受益,因为Scala编译器类已加载并获得“预热”和JIT编辑,这是{的整体{1}}的优点。

答案 2 :(得分:2)

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

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

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

对于SBT 0.10,我在这个问题上找不到任何文件。

答案 3 :(得分:0)

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