Dalvik VM vs. ART (Android Runtime): ¿Impacto para los usuarios finales?

Con Nexus 5 (Android 4.4 KitKat), Google ha enviado dos tiempos de ejecución para ejecutar aplicaciones.

Seleccione la opción Tiempo de ejecución en Android 4.4 KitKat Tiempos de ejecución Dalvik y ART en Android 4.4 KitKat

¿Cuáles son las diferencias entre Dalvik y ART para los usuarios finales? ¿Cómo pueden verse afectados los usuarios finales por esto? ¿Hay alguna razón específica por la que deba elegir el nuevo tiempo de ejecución de ART?

El hecho de que tenga que habilitar y buscar en las opciones de desarrollador para encontrar esta configuración debería ser una pista de que no está destinada a usuarios finales.
@DanHulme Buen punto, pero aún así, los entusiastas que no son desarrolladores juegan con las opciones de desarrollador e incluso las usan muchas veces para fines positivos que no son de desarrollo.
En lo que respecta a la experiencia del usuario, solo notará que la energía de la batería se ahorra en gran medida, ... sin embargo, no podrá ver la diferencia de velocidad al cambiar de Dalvik a ART.

Respuestas (1)

Dalvik VM (máquina virtual) es la versión de Google de una máquina virtual Java (en la que se ejecutan las aplicaciones). Las máquinas virtuales mantienen las aplicaciones aisladas e independientes del hardware real y otras aplicaciones. Pero, para que esto funcione, Dalvik necesita convertir el llamado código de bytes (diseñado para máquinas virtuales) a código de máquina nativo. Para minimizar la penalización de rendimiento que introduce la conversión de bytecode a código nativo, se realiza un proceso llamado compilación Just-In-Time (JIT), que convierte bytecode caliente, es decir, de uso frecuente, en código nativo. 1

ART (Android Runtime) es un reemplazo de Dalvik que utiliza la compilación Ahead-Of-Time (AOT), lo que significa que sus aplicaciones se compilan en un estado listo para ejecutar incluso antes de que las inicie. Esto generalmente se hace en el momento de la instalación de la aplicación, lo que hace que el proceso de ejecución y uso sea mucho más rápido y sencillo. Y dado que esto significa que la compilación solo se realiza una vez, también puede ver una mejor duración de la batería.

Si ART es mejor desde el punto de vista del rendimiento y la duración de la batería, ¿debería comenzar a usarlo?

No. Si hace eso, puede dañar las aplicaciones de terceros. Google ha enviado esta vista previa de ART con Android 4.4 para que los desarrolladores prueben sus aplicaciones en él.

Nota al margen: el enfoque de Google con ART es vencer a iOS (las aplicaciones de iOS son nativas, por lo que funcionan mejor incluso con especificaciones de hardware de gama baja), pero no sé hacia dónde se dirige... ¿Otra fragmentación? Consulte Los fabricantes de equipos originales son libres de construir dispositivos usando uno o ambos . Si bien la versión final no debería afectar a la mayoría de las aplicaciones, no es 100% multiplataforma.

1 Tenga en cuenta que JIT se agregó a Dalvik en Android 2.2

Tal vez vale la pena mencionar dos hechos: el AOT de ART da como resultado aplicaciones que usan un 20..25% más de almacenamiento en comparación con DEX. Además, las pruebas en un Nexus-5 que leí no mostraron ninguna diferencia en la velocidad subjetiva ni en la duración de la batería. Ambos ciertamente mejorarán, considerando que ART en KitKat es solo una vista previa de los desarrolladores y una verificación de compatibilidad (que, por ejemplo, WhatsApp falló). Así que secundo la conclusión de Sachin: aún no es bueno para los usuarios finales.
Excelente respuesta Me tomé la libertad de mejorarlo un poco. Pero no estoy de acuerdo con el último párrafo: ART no aumenta la fragmentación: si ART se considera listo para producción, no debería importar si Dalvik o ART ejecutan su aplicación, ambos usan el mismo formato .dex como punto de partida. Solo que ART hace que AOT compile el .dex en código nativo.