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

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

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

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

Здравствуйте! В целях оптимизации решил, помимо всего прочего, делать так:
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);
Насколько я понимаю, хуже вышеупомянуте меры не сделают, но сделают ли лучше? Подскажите, пожалуйста, насколько целесообразны данные действия, и в каких случаях так, напротив, делать нельзя ни в коем случае?

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

Регистрация: Jan 2013
Сообщений: 321
Цитата:
private function create_obj():void {
...
obj = null;
}
флеш сам это делает

Старый 04.02.2015, 18:09
a7s1h1 вне форума Посмотреть профиль Отправить личное сообщение для a7s1h1 Найти все сообщения от a7s1h1
  № 3  
Ответить с цитированием
a7s1h1

Регистрация: Oct 2013
Сообщений: 126
Цитата:
Сообщение от nubideus Посмотреть сообщение
флеш сам это делает
вот блин, только время потратил. Но если так оставить, от этого не хуже ведь? А то снова все локальные переменные перебирать, чтобы обнуление убрать...

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

Регистрация: Dec 2014
Сообщений: 312
Оставь как есть, тормозить от этого не будет.

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

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

Старый 04.02.2015, 18:54
a7s1h1 вне форума Посмотреть профиль Отправить личное сообщение для a7s1h1 Найти все сообщения от a7s1h1
  № 6  
Ответить с цитированием
a7s1h1

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

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

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

Старый 04.02.2015, 20:34
a7s1h1 вне форума Посмотреть профиль Отправить личное сообщение для a7s1h1 Найти все сообщения от a7s1h1
  № 8  
Ответить с цитированием
a7s1h1

Регистрация: Oct 2013
Сообщений: 126
да нет, спасибо, у меня их всего десяток, так что там дел на пару минут. А есть случаи, когда их лучше оставить?

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
http://flash.digy.net/2008/04/%D0%BF...8%D0%BB%D0%BE/

раз, дальше используйте исключительно растр, два, и придёт с опытом, три.
__________________
There is no thing in this world that is not simple.

Старый 04.02.2015, 21:32
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 10  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Интересно, что нить утратило актуальность за 7 лет?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Теги
..
Опции темы
Опции просмотра

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

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


 


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


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