2009-07-20 19 views
29

La justificación que he visto debe decir "Bastarizar" los códigos de byte de Java en Android fue el rendimiento. (Sospecho que hay otra razón.) Sin embargo, al cambiar los códigos de byte, ¿no han hecho tecnologías de aceleración de hardware como Jazelle Moot, y de hecho han degradado el rendimiento disponible para una plataforma Mobile Java?¿Android castra la tecnología Jazelle de ARM?

Parece contra-intuitivo para mí saber que la plataforma de destino es una plataforma móvil basada en ARM. Si bien PODRÍA darle un mejor rendimiento en otras arquitecturas de CPU, parece escupir a ARM y Jazelle.

¿Qué tipo de efecto cuantitativo tiene en el rendimiento de Java?

¿Realmente mejora el rendimiento y, de ser así, cómo?

¿Cuál es el efecto en otras plataformas? (Es decir, x 86, MIPS, bla, bla, bla ...)

+3

+1. No veo cómo esto no está relacionado con la programación. –

+2

Jazelle se ha ido en su mayoría. Algunos núcleos solo implementan entry/exit/undefined-instruction-trap, y dependen de una biblioteca para implementar todo, lo que es más lento que solo hacerlo en software. – rsaxvc

Respuesta

16

Sí Dalvik hace que Jazelle sea inútil. La única pregunta es ¿fue útil Jazelle para empezar o es 90% publicitario? Un buen compilador JIT o AOT (antes de tiempo) tiende a dar un rendimiento mucho mejor que tratar de utilizar instrucciones especializadas. El enfoque basado en registro de Dalvik podría ser más rápido que un intérprete tradicional de bytecode de Java, pero si la diferencia en menor entre la de un intérprete y la de un JIT. Esperemos que una de las próximas versiones de Android tenga un JIT.

Tarda ~ 5-10 años para escribir una buena máquina virtual con colectores y optimizadores de basura de última generación. Sun (y Microsoft) han pasado esos años. Google no tiene. Con suerte, seguirán invirtiendo en él para que, algún día, el código Java de Android no sea un 90% más lento de lo que debería ser.

+0

No conozco bien la instrucción Jazelle, pero el concepto cuando se aplica a Bytecodes parece lógico. Porque los bytecodes son solo un código de máquina para un procesador "Mítico". ¿Hay problemas de rendimiento con Jazelle? Puedo comprar la compilación de adelanto de tiempo siendo eficiente, porque eso no es diferente, entonces decir bytescode es una representación intermedia. Ese es exactamente el mismo concepto que un compilador normal. Y aunque lo mismo se aplica para JIT, requiere usar ciclos extra para hacerlo mientras ejecuta el código. – NoMoreZealots

+0

Mi intención no es disputar su respuesta, solo para obtener más información. – NoMoreZealots

+4

Jazelle tiene un buen rendimiento (2-4x frente a bytecode normal) pero aún 2-4x + más lento que un JIT. Si lee los artículos de Sun HotSpot, puede ver las optimizaciones (funciones internas, eliminación de sobrecarga de llamadas virtuales, eliminación de la necesidad de sincronizaciones, evitación de asignaciones de objetos, ...) que un JIT moderno puede hacer al realizar análisis de flujo de código. Jazelle no puede hacer ninguna de ellas. Jazelles no está mal, pero si tiene la opción entre un 386, 486 y core 2, quiero el núcleo 2. – hacken

4

Wikipedia: Dalvik virtual machine:

diferencia de la mayoría de máquinas virtuales de Java VM y verdadera que son máquinas de pila, la máquina virtual Dalvik es una arquitectura basada en registro.

siendo optimizado para los requisitos de memoria baja, Dalvik tiene algunas características específicas que lo diferencian de otros VM estándar:

  • El VM se adelgazado para utilizar menos espacio.
  • Dalvik no tiene compilador just-in-time.
  • El grupo de constantes se ha modificado para usar solo índices de 32 bits para simplificar el intérprete.
  • Utiliza su propio código de bytes, no el bytecode de Java.

Por otra parte, Dalvik ha sido diseñado para que un dispositivo pueda ejecutar varias instancias de la máquina virtual de manera eficiente.

Editar: Ver Wikipedia: Open Handset Alliance. El miembro fundador incluye Intel, Motorola, Qualcomm y Texas Instruments. ARM se unió un año después, en diciembre de 2008. Por lo tanto, supongo que no tenía sentido que estas compañías dependieran de una tecnología patentada para los que no eran miembros, cuando el objetivo era crear un competidor de iPhone/Blackberry de código abierto.

+0

Lo entiendo por una implementación de software pura, pero Jazelle agrega otra variable a la ecuación que hace que el rendimiento sea menos cortante y seco en esa plataforma. – NoMoreZealots

2

En realidad tenía la impresión de que Dalvik estaba destinado más a la eficiencia del espacio que a la eficacia de la ejecución. Además de Wikipedia:

Un sin comprimir archivo .dex es típicamente un pequeño tanto por ciento de menor tamaño que un comprimido .jar (Java Archive) derivados de los mismos archivos .class.

Mientras que los teléfonos actuales pueden usar un ARM con soporte de Jazelle, eso no es necesariamente cierto en el futuro.

Además de Wikipedia (advertencia: oídas):

Las especificaciones publicadas son muy incompleta, siendo sólo es suficiente para la escritura de código del sistema operativo que puede soportar una JVM que utiliza Jazelle. La intención declarada es que solo el software JVM necesita (o está permitido) que dependa de los detalles de la interfaz del hardware. Este enlace estrecho facilita que el hardware y JVM puedan evolucionar juntos sin afectar a otro software. En efecto, esto le da a ARM Holdings un control considerable sobre qué JVM pueden explotar a Jazelle. También evita que las JVM de código abierto usen Jazelle.

Una vez que agreguen un JITter a Dalvik, todo será un punto discutible.

+0

El hype es que se supone que un modelo basado en registro mejora el rendimiento. Revisa la publicación de eed3si9n. He leído que Jazelle te ofrece un mejor rendimiento que JIT solo, espero que ocurra lo mismo con JITter. Prácticamente, no estoy seguro, pero sé que ARM tiene un conjunto completo de tecnología relacionada con Java destinada a mejorar el rendimiento, incluida la operación Mixed JIT/Jazelle, pero eso solo puede ser marketing BS. – NoMoreZealots

Cuestiones relacionadas