Estoy tratando de tomar una decisión sobre cómo diseñar mi aplicación.Android: ¿toma poco realmente 2 bytes?
Tengo alrededor de 300 instancias de la clase como ésta:
public class ParamValue {
protected String sValue = null;
protected short shValue = 0;
protected short mode = PARAM_VALUE_MODE_UNKNOWN;
/*
* ...
*/
}
que tengo una gran variedad de estos casos. No puedo averiguar ¿estos cortos realmente toman 2 bytes o toman de todos modos 4 bytes?
Y necesito pasar la lista de estos objetos a través de AIDL como List<Parcelable>
. El paquete no puede readShort()
y writeShort()
, solo puede funcionar con int
. Por lo tanto, para usar brevemente aquí también tengo que empacar manualmente dos mis pantalones cortos en un int, parcela y luego desempaquetar. Se ve demasiado molesto.
¿Podría decirme cuántos bytes cortos toma, y tiene sentido usar el método abreviado en lugar de int aquí?
ACTUALIZACIÓN:
He actualizado mi pregunta para los futuros lectores.
Entonces, escribí una aplicación de prueba y descubrí que en mi caso no hay absolutamente ninguna razón para usar short
, porque ocupa el mismo espacio que int
. Pero si defino serie de cortometrajes como que:
protected short[] myValues[2];
entonces se necesitan menos espacio que matriz de INT:
protected int[] myValues[2];
entonces, parece que no hay ninguna razón para usar el short si intento lograr menos uso de memoria? –
Escribo un programa de prueba que crea una gran cantidad de objetos y mide la memoria libre antes y después con 'Runtime.freeMemory()' y lo ejecuta en la JVM de producción real. Haga esto para ambas formas de definir el objeto y vea si puede detectar una diferencia. Puede o no haber una diferencia, pero esto te permitirá ver con certeza. –
No creo que sea la implementación, al menos en el caso de las matrices, si va a admitir JNI. –