PDA

Просмотр полной версии : быстродействие - массивы


новый
09.03.2004, 08:20
Прочитал одну статейку про прототипы, там между прочим упомянулось о том что myarray.PUSH(data) работает медленней, чем myarray[myarray.length]=data .
Если это так (зачем тогда push и компания вообще нужны), то подскажите еще какие нибудь приемы оптимизации работы с массивами

Nox Noctis
09.03.2004, 08:46
аха. а еще в одной статейке написано что
clip.gotoAndPlay(frame);
работает в двадцать пять раз медленнее
чем
tellTarget(clip) { gotoAndPlay(frame); };
...что несомненно является правдой для плееров 5 и 6 версий.

а теперь внимание вопрос - почему все всё равно пишут clip.gotoAndPlay вместо теллТаргета? :))

TTS
09.03.2004, 11:56
Оригинал написал(а) Nox Noctis
...в двадцать пять раз медленнее...
...что несомненно является правдой для плееров 5 и 6 версий.

Ну эт ты загнул. Чувак после этого совсем забудет, что такое точечная нотация.

Nox Noctis
09.03.2004, 16:58
Оригинал написал(а) TTS

Ну эт ты загнул. Чувак после этого совсем забудет, что такое точечная нотация. это не я загнул, это загнул автор-разработчик flasm'а :) и в пятерочном плеере (да и в ранних версиях шестерочного) соотношение было примерно такое, я даж сам из любопытства проверял :)

новый
10.03.2004, 06:18
Спасибо :mad:

Nox Noctis
10.03.2004, 12:13
а на что именно ты злишься ?
операции с массивами нужны для того чтобы оперировать с массивами.
логично ? :)

естесственно, ты каждую операцию можешь написать сам. при желании. но это долго и неудобно. хотя в некоторых (не во всех) случаях стандартные функции и правда хуже чем то же самое написанное вручную.

nuran
10.03.2004, 12:16
это всё к тому же вопросу, почему продукты MX 2004 тормознее MX примерно в 1.5 раза и жрут очень много оперативу. РИАЛЬНО МНОГО. Очень требовательны. Сговорились все козлы с microsoft /// :mad: :mad: :mad:

Nox Noctis
10.03.2004, 12:23
Оригинал написал(а) nuran
это всё к тому же вопросу, почему продукты MX 2004 тормознее MX примерно в 1.5 раза и жрут очень много оперативу. РИАЛЬНО МНОГО.ээ?..
а можно конкретный пример бенчмарка ? :)

nuran
10.03.2004, 12:37
какой пример? Усё и так ясно: "МОЧИ КОЗЛОВ! однозначно!". Всех из Майкрософта перестрелять нужно.
Линух форева и флаг ей в одно место ...

nuran
10.03.2004, 12:40
Разве я не прав про сильную нагрузку? Хотя может это от того, что у меня триал уже 7 месяцев пашет вместо положенных ему 3 :D

Пушистик
10.03.2004, 13:10
просто это один из способов задания массивов...

getTimer();
arr=[]
for(i=0; i<100; i++){
arr[i]="clip"+i;
}
trace(arr[50]);
trace(getTimer());
//у меня выводит 31-34...


getTimer();
arr=[]
for(i=0; i<100; i++){
arr.push("clip"+i);
}
trace(arr[50]);
trace(getTimer());
//выводит постоянно 34...


:confused:

Jlekc
10.03.2004, 14:13
кстати о примерах, часто я встречал сравнительные тесты, може де есть подборка или инфа7

TTS
10.03.2004, 17:10
Оригинал написал(а) Nox Noctis
это не я загнул, это загнул автор-разработчик flasm'а :) и в пятерочном плеере (да и в ранних версиях шестерочного) соотношение было примерно такое, я даж сам из любопытства проверял :) У меня 7 для пятерочного и 2 для шестерочного. ~15% для семерки.
25 - это уж совсем никуда.

Nox Noctis
10.03.2004, 17:30
а всё очень относительно :) зависит и от метода проверки и от компа на котором проверяешь...

сейчас в шестерочном плеере проверил :)

комп: п4 3гхз
проверял: 100 прогонов по 10000 повторений.

результат:
среднее время точечной нотации - 180мсек
среднее время теллтаргета - 104мсек

как видишь тут даже полутора раз не наберется, но отличие явное даже на такой машине :)var cycles = 100;
var length = 10000;
var heap = [];
var dummy = [];
var current = 0;
//
this.onEnterFrame = function() {
trace(current);
if (current++<cycles) {
var s = getTimer();
for (var i = 0; i<length; i++) {
// 1)
// _root.gotoAndStop(3);
//
// 2)
/*
tellTarget ("_root") {
gotoAndStop(3);
}
*/
}
heap.push(getTimer()-s);
} else {
delete this.onEnterFrame;
trace("____________________");
trace(heap.join("\n"));
var sum = 0;
for (var i in heap) {
sum += heap[i];
}
trace("average : "+sum/heap.length);
}
};
кстати, обратите внимание, при использовании теллтаргета правильно брать путь к клипу в кавычки - иначе время будет расходоваться еще и на разрешение ссылки в параметре теллтаргета.

новый
11.03.2004, 03:48
для интереса тестировал пред.код на селероне-300 озу 288
только использовал
var length = 1000; (больше ждать долго)
результат:
среднее время точечной нотации - 308
среднее время теллтаргета - 168
вот так.
Спасибо всем.