2011-08-30 13 views
9

En el trabajo, estamos utilizando algunas máquinas bastante poderosas: HP Z600 con doble xeon @ 2.5GHz, 8-16GB ram. Desafortunadamente, debido a las políticas de la compañía que no se ajustan bien, nos vemos obligados a utilizar XP de 32 bits, por lo que hice una unidad de ramificación PAE de la memoria RAM de 4GB sin usar.
Ahora, los archivos temporales están en el ramdrive. También traté de trasladar todo el proyecto al ramdrive, luego a un disco SSD, pero no hubo una mejora notable en el inicio del modo alojado ni en los tiempos de compilación.
He ejecutado el Monitor de procesos de SysInternals para ver si hay cuellos de botella que no son visibles con el administrador de tareas/actividad del disco duro, pero no he visto nada notable, excepto algunos desbordamientos de búfer que no entiendo lo que ellos quieren decir.

Puedo suponer que el rendimiento para el inicio de OOMPH y la compilación de GWT están vinculados, así que estoy usando los tiempos de compilación como punto de referencia entre varios cambios.
He activado y desactivado el hyper-threading y el turbo-boost en el BIOS, pero de nuevo no vi diferencias. Hyperthreading incluso parece hacer todo más lento, puedo suponer que la penalización de conmutación de contexto es mayor para 16 núcleos que para 8 núcleos. Turbo-boost no parece hacer nada, puedo suponer que solo funciona en Win7, no he podido activar el controlador. Debería aumentar el núcleo de 2.5Ghz a 2.8Ghz.
Indexación e indicación de tiempo desactivadas en unidades NTFS, se cambió la configuración de rendimiento de primer plano a segundo plano y viceversa, se utilizó otra instancia de Eclipse, sin cambios.
Para la compilación he intentado especificar un número diferente de trabajadores, una memoria más grande y algunas otras opciones. Todo por encima de dos trabajadores aumenta el tiempo de compilación.
Las máquinas HP más antiguas (XW6600) parecen compilarse un poco más rápido, quizás debido al reloj de 2,8 GHz, pero su modo alojado parece iniciarse más lentamente.
¿Cómo mejorar los tiempos de compilación/modo alojado de GWT?

Para resumir, el uso de memoria es de aproximadamente 2,6 GB, el uso de archivo de paginación es cero, disco duro no está señalando mucha actividad, la actividad de la CPU es < 10% (de un solo núcleo en aproximadamente 50-70%), pero sigue siendo el ordenador parece que no hace nada durante un tiempo mientras compila o inicia OOMPH GWT.
Bien, ahora que he intentado todo lo que sabía y encontré en Internet, ¿hay algo más que pueda probar? ¿Cambiará mucho a Win7 de 64 bits (esto se debe el próximo año de todos modos)? ¿Hay alguna opción de hardware/software que pueda modificar?

L.E .: también ejecuté RATT (rastreador de MS) para ver si hay interrupciones que tardan demasiado, pero todo parece estar en orden. El antivirus no hace la diferencia. Comparó otro proyecto de GWT con mi móvil i7 (2630q) y el i7 es aproximadamente un 70% más rápido, aunque tiene aproximadamente el mismo reloj.

+0

+ 1 También estoy interesado en esto. Según mis observaciones, está vinculado a la CPU (incluso si no alcanza la CPU al 100%): pasar de Core 2 Duo 2GHz a Core I3 2.6Ghz reduce el tiempo de inicio en modo alojado casi a la mitad. (de ~ 60s a ~ 30s) –

Respuesta

8

En la mayoría de los casos he encontrado el motivo de la lenta compilación/actualización de modo alojado es que la aplicación está escrita de esta manera.

Para la compilación hay algunas cosas a tener en cuenta:

  • No mantener las clases y módulos no utilizados en la ruta de clases, eliminarlos si es posible porque ellos GWT es analizar todos modos en la etapa de compilación previa
  • whatch por tipo de explosión GWT-RPC, esto suele ser una causa de todos los problemas
  • ser muy cuidadoso con la interfaz ContextWithLokup, siempre tratan de minimizar el número de métodos utilizados en la interfaz que se extiende ContextWithLookup
  • Trate de revisar algunos otras opciones de compilación, como distributed compilation, soft permutations o compilación de múltiples JVM (compilador ejecutan con propiedad del sistema -Dgwt.jjs.permutationWorkerFactory = com.google.gwt.dev.ExternalPermutationWorkerFactory y -localWorkers para especificar el número de JVM)

Para el modo organizado:

  • uso carga diferida donde es posible. El mayor problema que vi con el modo alojado es que esa aplicación intenta inicializar demasiadas clases que ni siquiera se utilizan en la pantalla actual, lo que puede acelerar en gran medida el inicio de un modo alojado. Una vez más, cosas como la explosión de tipo RPC afecta el modo alojado también

Eso es todo lo que puedo aconsejar. Cosas como el disco RAM puede acelerar cosas como -compileReport, ya que puede generar una gran cantidad de archivos.

+0

Un buen consejo sobre las clases no utilizadas, me olvidé de eso (y de todos modos hemos anulado el precompilador). Acabo de enterarme de la "explosión de tipo", pero siempre hemos definido explícitamente tipos serializables. Usualmente compilamos solo una permutación y mi queja es acerca de compilar solo una (o más bien la fase de precompilación) para que la compilación distribuida no ayude mucho. Los trabajadores locales casi no hacen diferencia. La carga diferida se realiza tanto como sea posible, pero desde este punto requiere una nueva arquitectura, ya que fue mal diseñada desde el principio. ¡Una vez más, los módulos no utilizados son un muy buen consejo! – brainwash

Cuestiones relacionadas