@daniil14056

Почему стандартное заполнение массива int в разы медленнее чем через массив Object[]?

Сейчас изучаю компиляторы и тут начал простые эксперименты устраивать и обнаружил, что казалось бы более сложный способ работает в разы быстрее?
Почему такой код, с объявлением массива в 1-10 раз быстрее, и скорость заполнения
O(α(n)) тогда как самый стандартный способ O(a(n)*log(n)) что намного больше?

//За 40-60 мс
   List s=new ArrayList(a);
   int i=0;
   for(Object p : s){
         p=i++;     
        }

А этот медленее при a = 40 999 999 250 -600 мс
int i2[]=new int[a];
       
 for(i=0;i<a;i++){
           i2[i]=i;

При том я комбинировал и менял местами тесты, делал и до и после, что бы не закешировалось ни чего
Все дело в for( el : list) , но ведь я то же i++ кручу в цикле, и там то же проверка идет(наверное). Вопрос чисто по работе самого компилятора, стека функций, при том все операции тоже быстрее будут, даже с учетом преобразования из обьекта в int
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
a - это int?
Тогда у вас в первом случае массив будет пустой, и соответственно цикл вообще ни разу не выполнится.
А во втором случае - выполнится a раз.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы