Подтвердить что ты не робот

Использует ли SBT Fast Scala компилятор (fsc)?

Использует ли SBT fsc?

В тестовых целях я собираю программу на 500 строк на довольно медленной машине Ubuntu (Atom N270). Три последовательных периода компиляции были 77 с, 66 и 66 с.

Затем я скомпилировал файл с fsc из командной строки. Теперь мои времена были 80, 25, 18. Лучше! Это означает, что sbt не, используя fsc. Я прав? Если да, то почему он не использует его?

Я могу попытаться получить sbt, чтобы явно использовать fsc для компиляции, хотя я не уверен, что я выясню конфигурацию. Кто-нибудь сделал это?

4b9b3361

Ответ 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 я не могу найти никаких документов по этой проблеме.