Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   оптимизационная паранойя (http://www.flasher.ru/forum/showthread.php?t=210171)

a7s1h1 04.02.2015 17:24

оптимизационная паранойя
 
Здравствуйте! В целях оптимизации решил, помимо всего прочего, делать так:
1. Обнулять локальные переменные, ссылающиеся на экземпляр класса:
Код AS3:

// Пример
 
private function create_obj():void {
var obj:SomeClass = new SomeClass(); // создаём новый экземпляр какого-нибудь класса
addChild(obj); // добавляем экземпляр в список отображения
obj = null; // обнуляем ссылку, потому что в пределах данного блока (будь то метод или цикл, вобщем, всё, что ограничего abuehysvb скобками) к этой переменной обращения уже не будет
}

2. Добавить слушателям слабые ссылки:
Код AS3:

// Пример
 
// Было
addEventListener(Event.REMOVED_FROM_STAGE, cleanup);
// Стало
addEventListener(Event.REMOVED_FROM_STAGE, cleanup,false,0,true);

Насколько я понимаю, хуже вышеупомянуте меры не сделают, но сделают ли лучше? Подскажите, пожалуйста, насколько целесообразны данные действия, и в каких случаях так, напротив, делать нельзя ни в коем случае?

nubideus 04.02.2015 17:56

Цитата:

private function create_obj():void {
...
obj = null;
}
флеш сам это делает

a7s1h1 04.02.2015 18:09

Цитата:

Сообщение от nubideus (Сообщение 1178525)
флеш сам это делает

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

callme 04.02.2015 18:29

Оставь как есть, тормозить от этого не будет.

caseyryan 04.02.2015 18:34

странная какая-то оптимизация)
Обнуление локальной ссылки на объект - это совсем не оптимизация. Гораздо важнее сделать деструктор для самого объекта, которые отпишет его от всех слушателей и удалит из всех массивов.
А создание слабой ссылки - это вообще зло. Такие слушатели могут удаляться в самый неподходящий момент. По собственному (негативному) опыту могу сказать, что слушатели надо удалять вручную. Лучше предусмотреть это сразу, еще при написании кода добавления, чтобы потом не забыть. Я лично сразу делаю методы-деструкторы. И сразу прописываю в них удаление всех слушателей, которые добавляются в классе

a7s1h1 04.02.2015 18:54

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

callme 04.02.2015 19:04

Если много где нужно убрать анонимные функции, то проще по форуму поискать когда их можно использовать и когда нельзя.

a7s1h1 04.02.2015 20:34

да нет, спасибо, у меня их всего десяток, так что там дел на пару минут. А есть случаи, когда их лучше оставить?

ZackMercury 04.02.2015 21:07

http://flash.digy.net/2008/04/%D0%BF...8%D0%BB%D0%BE/

раз, дальше используйте исключительно растр, два, и придёт с опытом, три.

GBee 04.02.2015 21:32

Интересно, что нить утратило актуальность за 7 лет?


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

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