Ну, я думал, что компилятор Java позаботится об этом виде оптимизации, но это не так:
public static void main(String[] args) {
String[] array = new String[10000000];
Arrays.fill(array, "Test");
long startNoSize = Calendar.getInstance().getTimeInMillis();
for(int i=0; i< array.length;i++)
{
array[i]=String.valueOf(i+1);
}
long finishNoSize = Calendar.getInstance().getTimeInMillis();
System.out.println(finishNoSize-startNoSize);
System.out.println("Size saved");
int length = array.length;
long startSize = Calendar.getInstance().getTimeInMillis();
for(int i=0; i< length;i++)
{
array[i]=String.valueOf(i+2);
}
long finishSize = Calendar.getInstance().getTimeInMillis();
System.out.println(finishSize-startSize);
}
После нескольких последовательных прогонов результат выглядит так:
6207
Size saved
4594
Таким образом, разница составляет 1500 миллисекунд.
UPDATE
Когда циклы меняются местами, результат тоже меняется :)
Так что нет проблем с отсутствием оптимизации.
Так что в Java вызов Container.size не влияет на производительность.