Сценарий:
Машина, которую я использую для разработки, имеет 32 ГБ оперативной памяти DDR3, i7 3770, SSD. Проект большой, Scala компилируется в большинстве случаев во время инкрементной компиляции, но иногда одно изменение приводит к перекомпиляции сотен файлов, тогда требуется некоторое время для компиляции всех и некоторого времени для jrebel для перезагрузки всех измененных файлов.
Вопрос:
Собирает ли все на RAMFS (Mac) компиляцию и перезагрузку jrebel значительно быстрее?
Мой план состоял в том, чтобы поместить все непосредственно связанные с проектом в раздел RAMFS (.ivy, источник проекта,.sbt, возможно, даже скопировать JDK и т.д.). Я бы создал script, чтобы сделать все это при загрузке или вручную, что не будет проблемой. Кроме того, я бы установил задачи синхронизации файлов, поэтому потерять изменения не будет проблемой в случае сбоя ОС.
Обновление:
- log говорит около 400 среди java и Scala источники скомпилированы после очистки.
- после изменения файла в основном модуле он перекомпилирует 130 файлов за 50 секунд.
- jrebel берет 72s для перезагрузки после # 1 и 50 секунд после # 2
- добавление -Drebel.check_class_hash = true сделало jrebel перезагрузкой мгновенно после # 2.
Я очень доволен этими результатами, но все еще интересуюсь, как сделать компиляцию Scala еще быстрее, поскольку использование cpu получает не более 70% всего лишь около 5 секунд в процессе компиляции, который занимает 170 с, общее использование процессора в течение компиляция составляет 20%.
UPDATE:
После размещения папок JVM, source,.ivy2 и .sbt в RAMDISK я заметил небольшое улучшение только времени компиляции: от 132 до 122 (после чистого). Так что, не стоит того.
Примечание:
Это исключает разрешение зависимостей, поскольку я использую этот подход, чтобы избежать потери зависимости после очистки.