Sto cercando di decidere come progettare la mia app.Android: ci vogliono davvero 2 byte?
Ho circa 300 istanze della classe proprio come questo:
public class ParamValue {
protected String sValue = null;
protected short shValue = 0;
protected short mode = PARAM_VALUE_MODE_UNKNOWN;
/*
* ...
*/
}
ho un array di questi casi. Non riesco a scoprire che questi cortometraggi prendono davvero 2 byte o prendono comunque 4 byte?
E ho bisogno di passare l'elenco di questi oggetti tramite AIDL come List<Parcelable>
. Il pacco non può readShort()
e writeShort()
, può funzionare solo con int
. Quindi, per usare l'abbreviazione anche qui, devo confezionare manualmente due miei pantaloncini in un solo int, pacchettizzarlo e poi disfarlo. Sembra troppo invadente.
Potrebbe dirmi quanti pantaloncini di byte sono necessari, e ha senso utilizzare short anziché int qui?
UPDATE:
Ho aggiornato la mia domanda per i lettori futuri.
Così, ho scritto un'app di test e ho capito che nel mio caso non c'è assolutamente alcun motivo per usare short
, perché occupa lo stesso spazio di int
. Ma se definisco serie di bicchierini genere:
protected short[] myValues[2];
quindi richiede meno spazio rispetto array di int:
protected int[] myValues[2];
quindi, sembra che non ci sia alcun motivo per usare short se cerco di ottenere un minor utilizzo della memoria? –
Scriverò un programma di test che crea un numero elevato di oggetti e misura la memoria libera prima e dopo con 'Runtime.freeMemory()' ed eseguirlo sulla JVM di produzione effettiva. Fai questo per entrambi i modi di definire l'oggetto e vedi se riesci a rilevare una differenza. Ci può o non può essere una differenza, ma questo ti permetterà di vedere di sicuro. –
Non penso che dipenda dall'implementazione, almeno nel caso degli array, se supporterà JNI. –