Показаны сообщения с ярлыком Signal. Показать все сообщения
Показаны сообщения с ярлыком Signal. Показать все сообщения

пятница, 22 марта 2013 г.

Signals vs On/Trigger (jQuery style)


Хочу сделать свою небольшую библиотечку для gamedev на js. И столкнулся с вопросом, как реализовать Observer. Более производительным подходом было бы использовать Signals. Однако более привычным в js считается on/trigger (аля-jquery).

Кто-нибудь сигналы использует, стоит ли реализовывать библиотеку на Signal или все же лучше on/trigger?

среда, 24 октября 2012 г.

Tricks / Оптимизация для Starling (RU)

Начиная с мая 2012 в Starling начали использовать паттерн - объектный пул для событий (Event). Теперь каждая отправка сообщения не создает новый экземпляр, а использует существующий. Вот короткий пример:

//по-старинке. Создаем экземпляр
dispatchEvent(new Event(Event.COMPLETE));

//по-новому. Event будет взять из пула объектов
dispatchEventWith(Event.COMPLETE);

Еще один повод начать использовать Starling Events а не Signals Robert Penner-а. И вот неделю назад Джош (создатель Feathers) перешел с Signals на Event-ы от Starling. Но не стоит забывать о одной проблеме пула объектов и событий, - после отправки Event-а в свободное плаванье, исходный объект перестает как либо контролировать жизненный путь экземпляра Event-а, поэтому есть шанс с вероятностью отличной от нуля, что этот Event попадет в руки 2х разных процессов, которые станут совместно владеть Event-ом, не подозревая об этом. Единственный выход,- не хранить указатели на Event-ы.

Tricks / Starling Optimization (EN) / Updated

From may of 2012 in Starling started using pattern pool of objects for events. So for every dispatch of event new instance doesn't create. Here example:

//ordinary. Create instance
dispatchEvent(new Event(Event.COMPLETE));

//new. Use pool of Events
dispatchEventWith(Event.COMPLETE);

One more point to start using custom Starling Events nor Robert Penner Signals. Actually I'm in love with Signals. But here was one problem - Starling uses custom Events but Feathers (ex-Foxhole) has used Signal. But now about one week Josh (author of Feathers) had move from Signals to Starling Events. I think it's better.

Be aware there some snake pit: Pool of objects can return you object that still used other event handler. That requires more trust to third-part handlers.

Update

By the way, here is wiki page, about this trick. And one more - about pass and cache additional date with events.

Press Any Key...