Скорость инкрементной компиляции в Scala зависит от количества классов в файле? - программирование
Подтвердить что ты не робот

Скорость инкрементной компиляции в Scala зависит от количества классов в файле?

Я написал свой первый проект среднего размера в Scala, и теперь я немного обеспокоен тем, что медленное инкрементное время компиляции внутри Eclipse может иметь какое-то отношение к моей тенденции относить мои классы к относительно небольшим, большим .scala.

Моя логика заключается в следующем: если я модифицирую небольшой класс внутри большого файла .scala и нажимаю save, компилятор может видеть только, что весь файл был каким-то образом изменен и поэтому вынужден перекомпилировать все, что в файл вместе с зависимыми классами, а не только модифицированный класс и его зависимые классы.

Итак, вот вопрос: влияет ли среднее число классов Scala, которое вы помещаете в один файл, на скорость перекомпиляции? Или сказать так: с точки зрения скорости перекомпиляции небольшие файлы .scala предпочтительнее больших, или нет никакой разницы?

4b9b3361

Ответ 1

Вы правы: блок отслеживания зависимостей - это файл. Если вы вносите изменения в один класс, но ваш блок компиляции имеет несколько классов, это приведет к перекомпиляции всех файлов, которые зависят от других классов в одном файле.

Edit:

Так как 0.13.6 sbt использует новую схему хеширования имен по умолчанию. Это позволяет перекомпилировать только файлы, имеющие хотя бы некоторую зависимость от измененного имени.

Таким образом, Sbt работает в командной строке, а Eclipse использует инкрементный компилятор в Sbt.