Использует ли SBT Fast Scala компилятор (fsc)?
Использует ли SBT fsc?
В тестовых целях я собираю программу на 500 строк на довольно медленной машине Ubuntu (Atom N270). Три последовательных периода компиляции были 77 с, 66 и 66 с.
Затем я скомпилировал файл с fsc
из командной строки. Теперь мои времена были 80, 25, 18. Лучше! Это означает, что sbt не, используя fsc
. Я прав? Если да, то почему он не использует его?
Я могу попытаться получить sbt, чтобы явно использовать fsc для компиляции, хотя я не уверен, что я выясню конфигурацию. Кто-нибудь сделал это?
Ответы
Ответ 1
SBT не может извлечь выгоду из компилятора Fast Scala при его интерактивном запуске (с использованием или без использования режима непрерывной сборки), поскольку классы компилятора Scala загружаются и становятся "разогретыми" и JIT-ed, что все преимущества fsc
.
Ответ 2
В этом обсуждении я понял, что использовал sbt
неправильный путь.
Вместо (из командной строки):
$ sbt compile
$ sbt test
.. нужно держать sbt
запущенным и рассматривать его как командную строку.
$ sbt
> compile
...
> test
Он имеет историю команд и даже возможность вернуться в командную строку ОС. Я написал этот "ответ" для других, подобных мне (исходя из мышления Makefile), которые могут не понимать, что мы принимаем таблетку не так.:)
(Тем не менее он все еще медленный.)
Ответ 3
По крайней мере, для SBT 0.7.x авторы объясняют, что это не так быстро, как fsc, который кэширует экземпляр компилятора (включая загруженные библиотеки), а не только классы JITted-компилятора:
http://code.google.com/p/simple-build-tool/wiki/ChangeDetectionAndTesting
Мой опыт также подтверждает, что fsc работает быстрее для полного компиляции, но автоматически не выбирает, что перекомпилировать.
Для SBT 0.10 я не могу найти никаких документов по этой проблеме.
Ответ 4
Вам больше не нужно это делать. Теперь у Sbt есть свой путь: