Просмотр полной версии : Что быстрее? ... нет, что эффективнее в конкретном случае?
llllllllll
06.05.2003, 17:35
К примеру интересует мнение, что лучше в конкретной задаче -> "проверка всех элементов массива": с помощью for(i=0;i<Array.length;i++) или for(i in Array)
?
Techmaker
06.05.2003, 17:40
ой...(извеняюсь) я глубоко не гуру :D
я думаю второе..... :)
Я проверял - цикл 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 и т д ...
Быстрее работает 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 .
...думаю этим сведениям можно вполне доверять :)
если не верится - всегда можно разложить код на ассемблер виртуальной машины флэша и посчитать комманды :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.