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