Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Что быстрее? ... нет, что эффективнее в конкретном случае? (http://www.flasher.ru/forum/showthread.php?t=44860)

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
Цитата:

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


Часовой пояс GMT +4, время: 08:19.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.