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

Запустит все с ускорения диска RAM scala время компиляции?

Сценарий:

Машина, которую я использую для разработки, имеет 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 (после чистого). Так что, не стоит того.

Примечание:

Это исключает разрешение зависимостей, поскольку я использую этот подход, чтобы избежать потери зависимости после очистки.

4b9b3361

Ответ 1

Я понятия не имею, какое ускорение вы можете ожидать с Mac, но я видел ускорения в Linux, компилирующие компилятор Scala, которые достаточно обнадеживают, чтобы попробовать. Мой отчет (предупреждение: вполне специфичный для Linux) там.

Ответ 2

Вы можете попробовать установить аргумент VM -Drebel.check_class_hash = true, который будет проверять контрольную сумму перед перезагрузкой классов.

Ответ 3

Часто бывает очень мало места на диске RAM, если вы работаете с Linux или OSX. Эти ОС кэшируют файлы в любом случае.

https://unix.stackexchange.com/a/66402/141286