2016-12-16 1 views
23

Я строю Javadoc для модуля с 2,509 классами. В настоящее время это занимает 7 минут или 6 файлов в секунду.Есть ли способ ускорить Javadoc (занимает 7 минут)

Я попытался

mvn -T 1C install 

javadoc Однако использует только 1 процессор. Есть ли способ получить больше и/или ускорить работу?

Я использую Oracle JDK 8 update 112. Моя машина Dev имеет 16 ядер и 128 ГБ памяти.

Запуск полета рекордер я могу есть только одна нить main

enter image description here

Для тех, кто заинтересован я использовал следующие варианты.

<plugin> 
    <artifactId>maven-javadoc-plugin</artifactId> 
    <configuration> 
     <additionalJOptions> 
      <additionalJOption>-J-XX:+UnlockCommercialFeatures</additionalJOption> 
      <additionalJOption>-J-XX:+FlightRecorder</additionalJOption> 
      <additionalJOption>-J-XX:StartFlightRecording=name=test,filename=/tmp/myrecording-50.jfr,dumponexit=true</additionalJOption> 
      <additionalJOption>-J-XX:FlightRecorderOptions=loglevel=debug</additionalJOption> 
     </additionalJOptions> 
    </configuration> 
</plugin> 

Примечание: Один из способов это делать

-Dmaven.javadoc.skip=true 
+0

Профиль процесса JavaDoc. Я предполагаю, что это, вероятно, связано с IO. Таким образом, вы можете загрузить источник на ramdisk или ssd. –

+0

@ ElliottFrisch Хорошая мысль, диск занят 3%, но процессор почти точно 100% (один процессор). Я могу профилировать его с помощью Flight Recorder, хотя и обновится. –

+0

CPU может быть в ожидании ввода-вывода и 100%. –

ответ

-3

Используйте Doxygen вместо обычного MVN, что вы используете сейчас.

+0

Ускоряет ли javadoc? –

1

Запуск maven с -T1C приведет к тому, что maven попытается построить модули параллельно, поэтому, если у вас есть многомодульный проект, в лучшем случае он будет строить javadoc каждого модуля параллельно (если ваш график зависимости между модулями позволяет это) ,

Сам процесс javadoc является однопоточным, поэтому вы не сможете использовать несколько ядер для генерации javadoc одного модуля.

Однако, поскольку у вас есть много классов (и, возможно, много @ doclets или похожих?), Возможно, процесс javadoc может извлечь выгоду из расширенной кучи. Вы изучали деятельность GC? Попробуйте добавить это в вашей конфигурации, увидеть, если это помогает:

<additionalJOption>-J-Xms2g</additionalJOption> 
<additionalJOption>-J-Xmx2g</additionalJOption> 
+0

Я могу проверить, что размер памяти не ограничен. Значение по умолчанию должно быть 32 ГБ на этом компьютере. –