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