SBT是否使用了fsc?
出于测试目的,我正在一台相当慢的Ubuntu机器(Atom N270)上编译500行程序。连续三次编译时间为77s,66s和66s。
然后我从命令行用fsc
编译了该文件。现在我的时间是80年代,25年代,18年代。更好!这意味着我使用fsc
不。我对吗?如果是这样,为什么不使用呢?
我可能会尝试让sbt明确使用fsc进行编译,但我不确定我是否会找出配置。有没有人这样做过?
答案 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现在有自己的方式: