Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.02.2014, 17:19
Rivexe вне форума Посмотреть профиль Отправить личное сообщение для Rivexe Найти все сообщения от Rivexe
  № 1  
Ответить с цитированием
Rivexe
 
Аватар для Rivexe

Регистрация: Jun 2013
Сообщений: 133
По умолчанию Оптимизация dispatchEvent

Пара глупых вопросов, но может кто подскажет. Есть экземпляр класса, который при определенный условиях отправляет событие
Код AS3:
dispatchEvent(new SomeEvent(SomeEvent.SOME_TYPE, this))
Имеет ли смысл производить такие оптимизации:
1. Перед отправкой события проверять имеет ли объект слушатель для данного типа события, дабы не стрелять в холостую:
Код AS3:
if(hasEventListener(SomeEvent.SOME_TYPE));
	dispatchEvent(new SomeEvent(SomeEvent.SOME_TYPE, this));
2. Кешировать событие в переменную и рассылать только его, дабы не мучить gc
Код AS3:
private var _event:SomeEvent = new SomeEvent(SomeEvent.SOME_TYPE, this);
...
private function someMethod():void
{	
	dispatchEvent(_event);
}
или это все напрасно и не имеет смысла?

Старый 12.02.2014, 17:34
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
p.s.Я не по теме, просто заметил что вы передаёте this в параметр, где надо указывать наличие всплытия (bubbles), true или false.

Старый 12.02.2014, 17:34
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 3  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
По первому вопросу ответ очень прост - стоит, так-как проверить более быстрее, чем создать объект.

Старый 12.02.2014, 17:43
Rivexe вне форума Посмотреть профиль Отправить личное сообщение для Rivexe Найти все сообщения от Rivexe
  № 4  
Ответить с цитированием
Rivexe
 
Аватар для Rivexe

Регистрация: Jun 2013
Сообщений: 133
Цитата:
Сообщение от samana Посмотреть сообщение
p.s.Я не по теме, просто заметил что вы передаёте this в параметр, где надо указывать наличие всплытия (bubbles), true или false.
Все норм, SomeEvent это кастомное событие расширяющее стандартный Event, вторым параметром передаются необходимые данные, в данном случае просто ссылка на экземпляр класса, а уже третьим и четвертым идут bubbles и cancelable.

Старый 12.02.2014, 17:43
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 5  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Но hasEventListener проверяет текущий объект, а на событие может быть подписан кто угодно, намного выше (parent-ы). Не обязательно текущее событие ловит именно тот объект, который его рассылает.

Старый 12.02.2014, 17:46
Rivexe вне форума Посмотреть профиль Отправить личное сообщение для Rivexe Найти все сообщения от Rivexe
  № 6  
Ответить с цитированием
Rivexe
 
Аватар для Rivexe

Регистрация: Jun 2013
Сообщений: 133
Цитата:
Сообщение от Akopalipsis Посмотреть сообщение
По первому вопросу ответ очень прост - стоит, так-как проверить более быстрее, чем создать объект.
Спасибо. Именно это и интересовало что менее затратно, проверить наличие подписчиков или просто разослать событие (созданное через new или уже закешированное в переменной).

Старый 12.02.2014, 18:08
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 7  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
samana, хочу уточнить, Вы о bubbles?

Старый 12.02.2014, 18:20
belv вне форума Посмотреть профиль Отправить личное сообщение для belv Найти все сообщения от belv
  № 8  
Ответить с цитированием
belv
[+1 16.07.13]
[+4 16.07.13]

Регистрация: Oct 2005
Сообщений: 217
Цитата:
2. Кешировать событие в переменную и рассылать только его, дабы не мучить gc
Если Вы ответите на вопрос, сколько диспатчей нужно, чтобы вызвался gc и как часто собираетесь диспатчить Вы? Тогда можно будет говорить о смысле оптимизации.

Старый 12.02.2014, 19:05
Rivexe вне форума Посмотреть профиль Отправить личное сообщение для Rivexe Найти все сообщения от Rivexe
  № 9  
Ответить с цитированием
Rivexe
 
Аватар для Rivexe

Регистрация: Jun 2013
Сообщений: 133
Код AS3:
Если Вы ответите на вопрос, сколько диспатчей нужно, чтобы вызвался gc и как часто собираетесь диспатчить Вы? Тогда можно будет говорить о смысле оптимизации.
Отсутствие ответа на первый вопрос и сподвигло на эту тему) Событие будет рассылаться раз в несколько кадров.
Просто задумался, зачем при каждой рассылке создавать новое событие, если оно не меняется.

Старый 12.02.2014, 19:17
belv вне форума Посмотреть профиль Отправить личное сообщение для belv Найти все сообщения от belv
  № 10  
Ответить с цитированием
belv
[+1 16.07.13]
[+4 16.07.13]

Регистрация: Oct 2005
Сообщений: 217
В robotlegs все время создаются новые объекты команд. Я тоже задумался над вопросом, а что если мне нужно по enter frame менять модель. Ну написал тест, запустил профилировщик, жду когда вызовется gc, надоело ждать. Суть такова, там команды - это легковесные классы, при создании которых, расходуется мало памяти и соответственно gc вызовется не скоро. Я думаю, что с событийным объектом примерно та же ситуация. Конечно, если есть возможность оптимизировать и Вы хотите спать спокойно, то можно и оптимизировать.

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:12.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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