2 votos

¿Qué significa int, jit, fast y portable en build.prop's dalvik.vm.execution-mode?

Hay muchos ajustes build.prop en internet, y algunos dicen que dalvik.vm.execution-mode debe ser int:jit, y otros dicen que debería ser fast:jit o incluso en un orden reverso como jit:fast para rendimiento. ¿Cuál es la diferencia entre int y fast, y ¿importa el orden (antes y después de los dos puntos)? Mi teléfono está corriendo Android 4.4.2 KitKat.

Editar: Solo un comentario, ART no está soportado en mi dispositivo (Samsung Galaxy Note 2), incluso si instalo el programa dex2oat y libart.so, no funcionará.

2voto

Andrew T. Puntos 2107

Resumen

Estos son los valores para Dalvik VM runtime:

  • Rápido: optimizado para la plataforma actual y puede consistir en rutinas de ensamblaje optimizadas manualmente (predeterminado)
  • Portable: escrito en C y se espera que se ejecute en una amplia gama de plataformas
  • jit: compilación justo a tiempo

En cuanto al orden, el código fuente base solo reconoce int:.


Según dalvik/docs/embedded-vm-control.html,

Modo de Ejecución

La implementación actual de Dalvik VM incluye tres núcleos de intérprete distintos. Estos se conocen como "rápido", "portable" y "debug". El intérprete "rápido" está optimizado para la plataforma actual y puede consistir en rutinas de ensamblaje optimizadas manualmente. En contraste, el intérprete "portable" está escrito en C y se espera que se ejecute en una amplia gama de plataformas. El intérprete "debug" es una variante de "portable" que incluye soporte para perfilado y paso a paso.

La VM también puede admitir la compilación justo a tiempo. Si bien no es estrictamente un intérprete diferente, el compilador JIT se puede habilitar o deshabilitar con el mismo indicador. (Ver la salida de dalvikvm -help para ver si la compilación JIT está habilitada en su VM.)

La VM le permite elegir entre "rápido", "portable" y "jit" con una forma extendida del argumento -Xint. El valor de este argumento se puede establecer a través de la propiedad del sistema dalvik.vm.execution-mode.

Para seleccionar el intérprete "portable", usaría:

adb shell setprop dalvik.vm.execution-mode int:portable

Si la propiedad no está especificada, se seleccionará automáticamente el intérprete más apropiado. En algún momento, este mecanismo puede permitir la selección de otros modos, como la compilación JIT. No todas las plataformas tienen una implementación optimizada. En tales casos, el intérprete "rápido" se genera como una serie de restos de C, y el resultado será más lento que la versión "portable". (Cuando tengamos versiones optimizadas para todas las arquitecturas populares, la convención de nombres será más precisa.)

Si el perfilado está habilitado o se conecta un depurador, la VM cambia al intérprete "debug". Cuando finaliza el perfilado o se desconecta el depurador, se reanuda el intérprete original. (El intérprete "debug" es sustancialmente más lento, algo a tener en cuenta al evaluar los datos de perfilado.)

El compilador JIT se puede deshabilitar por aplicación agregando android:vmSafeMode="true" en la etiqueta de la aplicación en AndroidManifest.xml. Esto puede ser útil si sospecha que la compilación JIT está causando que su aplicación se comporte incorrectamente.

También, según dalvik/docs/porting-guide.html,

Intérprete

El tiempo de ejecución de Dalvik incluye dos intérpretes, etiquetados como "portable" y "rápido". El intérprete portable está en su mayoría contenido dentro de una sola función C, y debería compilarse en cualquier sistema que admita gcc. (Si no tiene gcc, es posible que deba deshabilitar el modelo de ejecución "threaded", que depende de la implementación de la "tabla de saltos" de gcc; busque la definición de THREADED_INTERP.)

El intérprete rápido utiliza fragmentos de ensamblaje codificados a mano. Si no hay ninguno disponible para la arquitectura actual, el sistema de compilación creará un intérprete a partir de "restos" de C. El intérprete resultante de "todos los restos" es bastante más lento que el intérprete portable, haciendo de "rápido" algo un tanto inapropiado.

El intérprete rápido está habilitado de forma predeterminada. En plataformas sin soporte nativo, es posible que desee cambiar al intérprete portable. Esto se puede controlar con la propiedad del sistema dalvik.vm.execution-mode. Por ejemplo, si usted:

adb shell "echo dalvik.vm.execution-mode = int:portable >> /data/local.prop"

y reinicie, el marco de la aplicación de Android iniciará la VM con el intérprete portable habilitado.


Lectura adicional:

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X