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 теперь свой путь:

Другие вопросы по тегам