¿Se recomienda la combinación de clases con ProGuard en Android / Dalvik?

Se me ocurrió que una de las optimizaciones de código de ProGuard que usamos, es decir, la fusión de jerarquías de clases, tal vez no sea una buena opción en absoluto.

Mi intuición era que sería beneficioso combinar clases para reducir las invocaciones del ClassLoader, que al menos en una JVM es una operación particularmente lenta, y en nuestro código optamos por muchas clases más pequeñas (a menudo internas) en lugar de Grandes clases de objetos de Dios, por lo que el ClassLoader se ejecutará con relativa frecuencia.

Sin embargo, dado el caso extremo (probablemente improbable) de que todas las clases se fusionarían en una sola, entonces aunque el cargador sólo se invocara una vez, terminaríamos cargando toneladas de código en memoria que muy probablemente nunca se usarán ( 80/20 regla se aplica aquí, así supongo).

Eso me deja pensando:

1) ¿Qué tan rápido es la clase de carga en Dalvik en realidad? ¿Es una operación que vale la pena reducir mediante el uso de la fusión de clase en absoluto?

2) Dicho esto, ¿recomendaría usar la fusión de clase en todo en Android?

La combinación vertical de clases reduce las clases / interfaces con sus extensiones / implementaciones cuando éstas se dividen innecesariamente. Eso siempre debe ser una mejora (tamaño y rendimiento).

Para la fusión de clase horizontal, no puedo proporcionar una respuesta general. La base de código será más pequeña, pero algún código podría concebiblemente ser cargado pronto, o en el extremo, innecesariamente.

  • Problemas con OrmLite y obfuscation proguard
  • ¿Cómo comentas una regla en Proguard.cfg?
  • Aplicación de Proguard a una aplicación existente en Google Play
  • Configuración de Proguard al utilizar la plantilla Google Cloud Endpoints de Android Studio
  • Proguard config para facebook sdk. Eliminar todo excepto el análisis
  • ¿Cómo usar -dontwarn en ProGuard?
  • Crash ORMLite en Android con proguard
  • Proguard retrace no está mapeando el seguimiento de la pila a la fuente real
  • Crash en getDeclaredAnnotation cuando se utiliza Proguard
  • Android proguard incompleto stacktrace
  • ¿Cómo usar nuevo Android 2.0 Shrinker y setProPropertor falsa?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.