Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   вопрос по оптимизации обработки рассчетов движения n объектов (http://www.flasher.ru/forum/showthread.php?t=121422)

orcpochta 16.02.2009 11:15

вопрос по оптимизации обработки рассчетов движения n объектов
 
Как вы думаете, что "быстрее":
- вешать на каждый объект (из n объектов) свой обработчик onEnterFrame;
- вешать обработчик onEnterFrame на какой-то внешний клип и в нем проходить циклом по всем объектам, которых надо "двинуть"?

Пример: 1000 снежинок.

Со своих наблюдений я сделал вывод, что вешать свой обработчик на каждый объект эффективней, в условиях, когда процессор перестает справляться с обсчетами из-за большого количества объектов - движение менее дискретное. Хотя, казалось бы все должно быть наоборот, т.к. один обработчик, совершающий n наборов операций, по логике должен быть шустрее n обработчиков, совершающих 1 операцию, т.к. не надо тратить процессорное время на перепрыгивание по функциям-обработчикам.

А вы как считаете? Или, может быть, что наблюдали?

qazwsx 16.02.2009 12:09

А обход этих 1000 снежинок у тебя каким образом проиходит в массиве? Вооще тут от реализации всего кода на разных участках, зависит в каком из случаев будет производительность выше.

orcpochta 16.02.2009 12:57

Цитата:

Сообщение от qazwsx (Сообщение 798695)
А обход этих 1000 снежинок у тебя каким образом проиходит в массиве? Вооще тут от реализации всего кода на разных участках, зависит в каком из случаев будет производительность выше.

снежинки именованы snowflake0, snoqflake1...snowflakeN. У каждой из них есть snowflake.speedX и snowflake.speedY, обход через for.

qazwsx 16.02.2009 16:27

Попробуй в цикле обходить сразу 5 или 10 снежинок 1 не одну. И еще если я правильно понимаю speedX speedY это геттеры класа? Тогда что происходит при присваивании им значения?

orcpochta 16.02.2009 17:16

Цитата:

Сообщение от qazwsx (Сообщение 798771)
Попробуй в цикле обходить сразу 5 или 10 снежинок 1 не одну. И еще если я правильно понимаю speedX speedY это геттеры класа? Тогда что происходит при присваивании им значения?

это не геттеры, это просто дельты, на которые смещается снежинка, т.е. они генерируются при создании снежинки и она с ними живет..))
snowflakeN._x += snowflake.speedX;

nOobCrafter 16.02.2009 19:56

Цитата:

Как вы думаете, что "быстрее":
- вешать на каждый объект (из n объектов) свой обработчик onEnterFrame;
- вешать обработчик onEnterFrame на какой-то внешний клип и в нем проходить циклом по всем объектам, которых надо "двинуть"?
То есть получется лучше вариант 1, с учетом того что не на каждый обьект надо вешать, а на несколько? Просто такая же ситуация только кнупки и надо проверять их состояние..(

qazwsx 16.02.2009 21:36

Состояние ненадо проверять. Кнопки сами должны оповещать слушателя о своем состоянии. А в случае orcpochta обход сразу нескольких обьектов за 1 итирацию цикла должен быть эфективней поидее


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

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