SBT是否利用fsc?
为了测试目的,我正在一个相当慢的Ubuntu机器(Atom,N270)上编译一个500行的程序。连续三次编译时间分别为77s、66s和66s。
然后我从命令行用fsc编译了这个文件。现在我的时代是80年代,25岁,18岁。好多了!对我来说,这意味着sbt是而不是使用fsc的。我说的对吗?如果是的话,它为什么不使用它?
我可能会尝试让sbt显式地使用fsc编译,虽然我不确定我是否会弄清楚配置。有人做过这个吗?
发布于 2010-09-02 15:00:04
当您以交互方式运行快速Scala编译器(无论是否使用它的持续构建模式)时,SBT无法从它中获益,因为Scala编译器类被加载并得到“热身”和JIT-ed,这是fsc的全部优势。
发布于 2012-10-18 16:07:54
这次讨论让我意识到,我一直在错误地使用sbt。
而不是(从命令行):
$ sbt compile
$ sbt test..one应该保持sbt运行,并将其视为命令提示符。
$ sbt
> compile
...
> test它具有命令历史,甚至能够重新进入OS命令行。我给像我这样的人写了这个“答案”(来自Makefile的心态),他们可能没有意识到我们服用的药丸是完全错误的。:)
(不过还是很慢。)
发布于 2011-08-09 01:59:07
至少对于SBT0.7.x,作者解释说,它没有fsc那么快,fsc缓存编译器实例(包括加载的库),而不仅仅是JITted编译器类:
http://code.google.com/p/simple-build-tool/wiki/ChangeDetectionAndTesting
我的经验也证实,fsc对于完整编译来说更快,但不会自动选择要重新编译的内容。
对于SBT 0.10,我找不到任何关于这个问题的文档。
https://stackoverflow.com/questions/3624597
复制相似问题