Мы начинаем более активно использовать GWT в наших проектах, и производительность компилятора GWT становится все более раздражающей.
Мы собираемся начать изменять наши рабочие методы, чтобы смягчить проблему, включая больший акцент на браузер с размещенным режимом, который откладывает необходимость запуска компилятора GWT до более позднего времени, но это влечет за собой свои собственные риски, особенно связанные с не замечать проблем с реальными браузерами намного позже, чем хотелось бы.
В идеале, мы хотели бы сделать сам GWT-компилятор быстрее - минута на компиляцию довольно небольшого приложения приносит свои плоды. Тем не менее, мы используем компиляцию, если она довольно наивна, поэтому я надеюсь, что мы сможем быстро и легко добиться успеха.
В настоящее время мы вызываем com.google.gwt.dev.Compiler в качестве java-приложения из Ant Ant target с максимальной кучей 256 м и большим пространством стека. Компилятор запускается Ant с использованием fork = true и последней версии Java 6 JRE, чтобы попытаться воспользоваться улучшенной производительностью Java6. Мы передаем наш основной класс контроллера компилятору вместе с путем к классу приложения, и все готово.
Что еще мы можем сделать, чтобы получить дополнительную скорость? Можем ли мы дать ему больше информации, чтобы он меньше занимался поиском того, что делать?
Я знаю, что мы можем сказать, чтобы он компилировался только для одного браузера, но нам нужно провести многобраузерное тестирование, так что это не очень практично.
Все предложения приветствуются на этом этапе.
источник
Если вы запускаете компилятор GWT с флагом -localWorkers, компилятор будет компилировать несколько перестановок параллельно. Это позволяет вам использовать все ядра многоядерного компьютера, например, -localWorkers 2 сообщит компилятору о том, что нужно скомпилировать две перестановки параллельно. Вы не получите разницы в порядке величин (не все в компиляторе распараллеливаемо), но это все равно заметное ускорение, если вы компилируете несколько перестановок.
Если вы хотите использовать транковую версию GWT, вы сможете использовать хост-режим для любого браузера ( вне хост-режима процесса ), что устраняет большинство текущих проблем с хост-режимом. Похоже, именно в этом и заключается GWT - всегда разрабатывайте в режиме хостинга, поскольку компиляции вряд ли получат величины быстрее.
источник
Хотя эта запись довольно старая и большинство из вас, вероятно, уже знают, я думаю, стоит упомянуть, что GWT 2.x включает новый флаг компиляции, который ускоряет компиляцию, пропуская оптимизации. Вы определенно не должны развертывать JavaScript, скомпилированный таким образом, но это может сэкономить время во время непроизводственных непрерывных сборок.
Просто включите флаг: -draftCompile в строку вашего компилятора GWT.
источник
Вот список значений user.agent, которые вы можете установить.
(Добавление этого здесь , потому что я держу в конечном итоге здесь , когда я искать то , что я должен установить , чтобы сделать это только производить перестановку для хрома Ответ:.
<set-property name="user.agent" value="safari"/>
)источник
В более новых версиях GWT (начиная с 2.3 или 2.4, я полагаю), вы также можете добавить
в ваш gwt.xml для целей разработки. Это скажет компилятору GWT создать единую перестановку, охватывающую все локали и браузеры. Таким образом, вы все еще можете тестировать во всех браузерах и языках, но все еще только компилируете одну перестановку
источник
Вы можете добавить один вариант в свою сборку для производства:
-localWorkers 8
- где 8 - количество одновременных потоков, которые вычисляют перестановки. Все, что вам нужно сделать, это настроить этот номер на более удобный для вас номер. См. Производительность компиляции GWT (спасибо комментарию Денниса Ича).Если вы компилируете в среду тестирования, вы также можете использовать:
-draftCompile
что позволяет быстрее, но менее оптимизированные компиляции-optimize 0
который не оптимизирует ваш код (9 - максимальное значение оптимизации)Еще одна вещь, которая более чем удвоила производительность в режиме сборки и размещения, - это использование SSD-диска (теперь размещенный режим работает как шарм). Это не дешевое решение, но в зависимости от того, сколько вы используете GWT и стоимости вашего времени, оно может стоить того!
Надеюсь, это поможет вам!
источник
Компилятор GWT много анализирует код, поэтому его будет сложно ускорить. Этот сеанс от Google IO 2008 даст вам хорошее представление о том, что делает GWT и почему это занимает так много времени.
Я рекомендую для разработки максимально использовать Hosted Mode, а затем компилировать его только тогда, когда вы хотите провести тестирование. Это похоже на решение, к которому вы уже пришли, но в основном именно поэтому есть Hosted Mode (ну, это и отладка).
Вы можете ускорить компиляцию GWT, но только для некоторых браузеров, а не для 5 видов, которые GWT делает по умолчанию. Если вы хотите использовать Hosted Mode, убедитесь, что вы компилируете как минимум для двух браузеров; если вы компилируете для одного браузера, тогда код обнаружения браузера оптимизируется, а затем режим хоста больше не работает.
Простой способ настроить компиляцию для меньшего количества браузеров - создать второй модуль, который наследуется от вашего основного модуля:
Если
rename-to
атрибут установлен так же, выходные файлы будут такими же, как если бы вы сделали полную компиляциюисточник
источник
Для GWT 2.x я только что обнаружил, что если вы используете
Вы даже можете указать более одной перестановки.
источник