PDA

Просмотр полной версии : Что быстрее? ... нет, что эффективнее в конкретном случае?


llllllllll
06.05.2003, 17:35
К примеру интересует мнение, что лучше в конкретной задаче -> "проверка всех элементов массива": с помощью for(i=0;i<Array.length;i++) или for(i in Array)
?

Techmaker
06.05.2003, 17:40
ой...(извеняюсь) я глубоко не гуру :D
я думаю второе..... :)

Dagi
06.05.2003, 19:27
Я проверял - цикл for-in значительно медленнее for

Pietrovich
06.05.2003, 22:44
любопытная фигня...
в масиве со 100 000 элементов

быстрее всего работет l=MyArray.length
for (i=0; i<l; i++)
затем for (i in MyArray)
и самый тормозной for (i=0; i<MyArray.length; i++)


а если уменьшить кол-во до 50 000
то конструкция for .. in .. вырывается вперед ...

так что тут думать нада.... скока у тебя элементов будет....

но при любом раскладе каждый раз спрашивать длинну масива нерационально...

llllllllll
06.05.2003, 23:45
2Pietrovich:

а где ты 100000 элеменотов взял? =)

...

arr = [];
for(i=0;i<1000;i++) arr.push(i);

t = getTimer();
l = arr.length;
for(i=0;i<l;i++){}
trace(getTimer() - t);

t = getTimer();
for(i in arr){}
trace(getTimer() - t);

t = getTimer();
for(i=0;i<arr.length;i++){}
trace(getTimer() - t);


у меня на 1000 выдает результат типа 60/20/70, на 10000 что-то вроде 610/220/670 и т д ...

Audax
07.05.2003, 01:28
Быстрее работает while ( условие )

llllllllll
07.05.2003, 14:43
Оригинал написал(а) Audax DSN
Быстрее работает while ( условие )

но в AS нет цикла for =) for - это тот же while =) - а то что тебе дают лишнюю форму записи ... =)

Nox Noctis
10.05.2003, 00:49
все относительно :) то есть зависит только от того как к этому относиться :)


цитирую с flasm.sourceforge.net (http://flasm.sourceforge.net/)
for .. in loop , which uses enumerate keyword, will go through an array slightly faster than normal for loop - at least with medium size arrays. With a huge array, the opposite is true .

...думаю этим сведениям можно вполне доверять :)
если не верится - всегда можно разложить код на ассемблер виртуальной машины флэша и посчитать комманды :)