¿Por qué se eliminó de los consejos de rendimiento de Android “Evitar los mensajes en los que solo necesitas respuestas”?

La sección “Evitar los mensajes en los que solo se necesita Ints” se eliminó de la documentación oficial del desarrollador . (Consulte ¿Por qué Android no usa más enumeraciones? Para el contenido de la sección anterior)

¿Por qué? ¿Hubo algún cambio en la máquina virtual de Android que hizo que la sugerencia quedara obsoleta?

la versión original de ese documento era solo un montón de prejuicios. ha sido reescrito para contener solo hechos respaldados por puntos de referencia reales, y se actualiza a medida que se actualiza la máquina virtual. Puede encontrar los diversos puntos de referencia, además de algunos de los puntos de referencia que utilizamos para optimizar las bibliotecas centrales, en http://code.google.com/p/dalvik/ .

Una adivinanza:

  • Las CPU de Gigahertz como Hummingbird y Snapdragon ahora son comunes, y los requisitos de memoria pequeña de código pequeño que originalmente limitaban la VM Dalvik ya no son tan ciertas.
  • Todos los dispositivos de envío utilizan el JIT (nuevo en 2.2). El inicializador de clase de enum se ejecutará más rápido, los valores podrían tratarse como constantes de tiempo JIT, y el JIT bien podría tener soporte especial para agilizar las clases enum.
  • El código que es realmente sensible al rendimiento utiliza el NDK, que todavía era nuevo y sin pulir cuando se lanzó Android 1.5. El NDK en 2.3 admite actividades nativas, lo que permite juegos casi no administrados.

Por lo tanto, para los requisitos relativamente mundanos de una aplicación GUI, los beneficios de tiempo de desarrollo de las enumeraciones superan con creces el costo adicional de tiempo de ejecución.

Elliott Hughes ofrece más detalles sobre la reescritura de documentación en su blog: http://elliotth.blogspot.com/2010/09/java-benchmarks.html

La segunda mitad de la publicación explica que cada reclamo en el documento de rendimiento ahora está respaldado con puntos de referencia. Las versiones anteriores del documento aparentemente contenían afirmaciones no verificadas, como, “Evita enums porque son demasiado caras”.

La respuesta de 2011 de Elliot Hugues dijo que la razón original para evitar enumeración era por razones de rendimiento … como en “rendimiento de procesamiento”. Como este motivo no estaba respaldado por hechos, se eliminó de la documentación oficial.

Se ha agregado más adelante porque las enumeraciones añaden muchos más datos en la memoria que el uso de enteros.

Todavía es malo para el rendimiento de la memoria.

https://developer.android.com/training/articles/memory.html#Overhead