Как улучшить режим хостинга GWT / время компиляции? - PullRequest
9 голосов
/ 30 августа 2011

На работе мы используем довольно мощные машины: HP Z600 с двумя процессорами Xeon @ 2,5 ГГц, 8-16 ГБ оперативной памяти.К сожалению, из-за неправильной политики компании мы вынуждены использовать 32-разрядную версию XP, поэтому я сделал RAM-привод PAE из неиспользуемой оперативной памяти 4 ГБ.
Теперь временные файлы находятся на ramdrive.Я также пытался переместить весь проект в ramdrive, затем на SSD, но заметных улучшений во время запуска и компиляции во встроенном режиме не произошло.
Затем я запустил Process Monitor SysInternals, чтобы проверить, есть лилюбые узкие места, которые не видны с помощью диспетчера задач / активности жесткого диска, но я не видел ничего примечательного - кроме некоторых переполнений буфера, которые я не понимаю, что они означают.

Я могу предположить, что производительность дляЗапуск OOMPH и компиляция GWT связаны, поэтому я использую время компиляции для сравнения различных изменений.
Я активировал и деактивировал гиперпоточность и турбо-буст в BIOS, но опять-таки не увидел различий.Гиперпоточность даже, кажется, делает все медленнее, я могу предположить, что штраф за переключение контекста выше для 16 ядер, чем для 8 ядер.Турбо-буст, похоже, ничего не делает, я могу предположить, что он работает только под Win7, мне не удалось активировать драйвер.Он должен увеличить ядро ​​с 2,5 ГГц до 2,8 ГГц.
Деактивировать индексирование и метку времени на дисках NTFS, изменить настройки производительности с переднего плана на фоновый и обратно, использовать другой экземпляр Eclipse - без изменений.
Для компиляции я попытался указать другое количество работников, больший объем памяти и некоторые другие параметры.Все, что выше двух рабочих, увеличивает время компиляции.
Старые машины HP (XW6600), кажется, компилируются немного быстрее, возможно, из-за тактовой частоты 2,8 ГГц, но их режим хостинга запускается медленнее.

Подводя итог, можно сказать, что использование памяти составляет около 2,6 ГБ, использование файла подкачки равно нулю, жесткий диск не сигнализирует о большой активности, активность ЦП составляет <10% (одноядерное около 50-70%), нотем не менее компьютер, кажется, ничего не делает в течение некоторого времени при компиляции или запуске OOMPH GWT. <BR>Хорошо, теперь, когда я перепробовал все, что знал и нашел в Интернете, есть ли что-то еще, что я могу попробовать?Значительно ли улучшится переход на 64-битную Win7 (это произойдет в следующем году)?Есть ли какие-либо аппаратные / программные опции, которые я могу настроить?

LE: также запустил RATT (трассировщик от MS), чтобы увидеть, есть ли какие-нибудь прерывания, которые занимают слишком много времени, но все кажется в порядке,Антивирус не имеет значения.Проведено сравнение еще одного проекта GWT с моим мобильным телефоном i7 (2630q), и i7 работает примерно на 70% быстрее, хотя у него примерно такие же часы.

1 Ответ

9 голосов
/ 05 сентября 2011

В большинстве случаев я сталкивался с причиной медленного обновления режима компиляции / хостинга в том, что приложение написано таким образом.

Для компиляции есть несколько вещей, на которые стоит обратить внимание:

  • Не храните неиспользуемые классы и модули в вашем пути к классам, по возможности удалите их, потому что GWT все равно их анализирует на этапе прекомпиляции
  • Что за взрыв типа GWT-RPC, это обычно является причиной всех проблем
  • Будьте осторожны с интерфейсом ContextWithLokup, всегда старайтесь свести к минимуму количество методов, используемых в интерфейсе, который расширяет ContextWithLookup
  • Попробуйте проверить другие параметры компиляции, такие как распределенная компиляция , мягкие перестановки или компиляция с несколькими jvm (запустите компилятор с системным свойством -Dgwt.jjs.permutationWorkerFactory = com.google.gwt.dev.ExternalPermutationWorkerFactory и -localWorkers для указания количества JVM)

Для хост-режима:

  • Используйте ленивую загрузку, где это возможно. Самая большая проблема с размещенным режимом, которую я видел, заключается в том, что приложение пытается инициализировать слишком много классов, которые даже не используются на текущем экране, это может значительно ускорить запуск режима размещения. Опять же, такие вещи, как взрыв типа RPC, также влияют на режим хоста

Это все, что я могу посоветовать. Такие вещи, как RAM-диск, могут ускорять такие вещи, как -compileReport, поскольку они могут генерировать огромное количество файлов.

...