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