Байт-код dex (android), вероятно, еще более эффективен ... несжатый .dx меньше, чем сжатый jar .class, и вся причина для dalvik по сравнению с java mobile была производительностью (стандартный jvm слишком ненадежен для мобильных устройств)
трел на некоторые из примитивных коллекций Java (клад, fastutil, HPPC) и я заметил, что переменные класса иногда объявляются какfinal
локальные переменные. Например:
public void forEach(IntIntProcedure p) {
final boolean[] used = this.used;
final int[] key = this.key;
final int[] value = this.value;
for (int i = 0; i < used.length; i++) {
if (used[i]) {
p.apply(key[i],value[i]);
}
}
}
Я сделал несколько тестов, и кажется, что этонемного быстрее при этом, но почему это так? Я пытаюсь понять, что делает Java по-другому, если первые три строки функции были закомментированы.
Примечание: это похоже наэтот вопрос, но это было для c ++ и не рассматривает, почему они объявленыfinal
.