В настоящее время мы оцениваем конфигурацию ПК для разработчиков нового поколения для всей компании и заметили кое-что действительно странное.
У нашего довольно большого монолита - в нашей текущей конфигурации время сборки ок. 4,5 минуты (без теста, просто скомпилируйте).
Для нашей конфигурации следующего поколения мы обновили несколько компонентов. Умеренное увеличение частоты и IPC с процессором, удвоение количества ядер ЦП и переход с небольшого твердотельного накопителя SATA на твердотельный накопитель NVMe с пропускной способностью> 3 Гбит / с. Кроме того, конфигурация следующего поколения переключается с Windows 7 на Windows 10.
При выполнении первых тестов мы заметили почти идентичное время сборки (4,3 минуты), что было намного меньшим улучшением, чем мы ожидали.
Во время наших экспериментов мы однажды попытались запустить процесс сборки из виртуальной машины Linux, работающей на хосте Windows. В старой конфигурации (Windows7) время сборки уменьшилось с 4,5 до ~ 3,7 минут, на хосте Windows 10 - с 4,3 до 2,3 минут. Мы исключили такие вещи, как проверка на вирусы.
Мы были довольно удивлены этими результатами и попытались найти другое объяснение, чем несколько почти религиозных и оскорбительных заявлений о различных операционных системах.
Возникает вопрос: что мы могли сделать не так, настроив машину Windows так, чтобы скорость была почти вдвое меньше скорости Linux, работающей виртуализированной на том же самом хосте Windows? Тем более, что все аппаратные достижения, похоже, съедены переключением с Windows 7 на 10.
Другой вопрос: как мы можем ускорить процесс javac, чтобы использовать больше ядер, потому что прямо сейчас, используя Hotspot JDK 8, мы можем видеть не более двух ядер, действительно используемых сборкой. Я читал о sjavac, но это кажется довольно экспериментальной функцией, доступной только для OpenJDK9, не так ли?