Pregunta

Optimizaciones basados ??en el análisis de escape es una característica planificada para Proguard. Mientras tanto, ¿existen herramientas existentes como Proguard que ya lo hacen optimizaciones que requieren un análisis de escape?

¿Fue útil?

Solución

Sí, creo que lleva a cabo el marco hollín escapan análisis.

Otros consejos

¿Qué espera del análisis de escape en el nivel del compilador? clases de Java son más como archivos de objetos en C - que están vinculados en la JVM, por lo tanto, el análisis de escape sólo se puede realizar en el nivel de un solo método, que es de utilidad limitada y obstaculizará la depuración (por ejemplo, tendrá líneas de código a través de lo que no se puede recorrer).

El diseño de En Java, el compilador es bastante tonto - se comprueba la corrección (como pelusa), pero no tratar de optimizar. Las piezas inteligentes se ponen en la JVM - que utiliza múltiples técnicas de optimización para obtener así la realización de código en la plataforma actual, en las condiciones actuales. Desde la JVM sabe todo el código que se carga actualmente puede suponer mucho más que el compilador y realizar optimizaciones especulativas que se revierten el momento en que los supuestos se invalidan. HotSpot JVM puede reemplazar código con la versión más optimizado sobre la marcha mientras que la función está en marcha (por ejemplo, en el medio de un bucle como el código obtiene 'más caliente').

Cuando no está en depurador, las variables con tiempos de vida que no se solapan se contraen, se izan invariantes de bucles, los bucles se desenrollan, etc. Todo esto ocurre en el código JIT-ted y se hace dependiente de la cantidad de tiempo que se gasta en esta función (que no tiene mucho sentido gastar código optimizando el tiempo que nunca se). Si llevamos a cabo algunas de estas optimizaciones iniciales, el JIT tendrá menos libertad y el resultado global podría ser una neta negativa.

Otra optimización es la asignación de pila de objetos que no escapa el método actual - esto se hace en ciertos casos, sin embargo he leído un algún lugar del papel que el tiempo para realizar el análisis de escape rigurosa vs el tiempo ganado por optimizaciones sugiere que no vale la pena que, por lo que la estrategia actual es más heurístico.

En general, cuanta más información acerca de la JVM tiene su código original, mejor se puede optimizarlo. Y las optimizaciones de la JVM están constantemente mejorando, por lo tanto, pensaba en optimizaciones de código compilado solamente cuando se habla de JVM básicos como los teléfonos móviles muy restringida y. En estos casos se desea ejecutar su aplicación a través de Ofuscador de todos modos (a nombres de clase se acortan, etc.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top