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

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

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Question Оптимизация использования ресурсов

Здравствуйте.
Ответьте пожалуйста на мои несколько вопросов на счёт оптимизации использования ресурсов Flash-плеером.
Может кто рылся или знает какие из этих вариантов более быстродействующей и менее ресурсоёмкие, или вообще нет разницы.
1. Аттач мувиклипа, к примеру объект с 4 подклипами у которых разные кейфреймы, но при атаче используется лишь одна.
1.1. Лучше атачить только нужный подклип
1.2. Родителський объект разбить на 4 кейфрейма, и после атачча использовать готуандСтоп
1.3. В родительском объекте при атаче выгружать или скрывать ненужные подклипы

2. Использовать централизованное хранение данных
Код AS1/AS2:
function setRegister(object:String,define:String)
{
	if (eval('register.'+object)!='[object Object]') 
		register[object] = new Object();
 
	if (define) 
		register[object] = (Number(define)==define) ? Number(define) : define;
}
 
function getRegister(object:String)
{
	return register[object];	
}
3. А так же имеет ли смысл данная запись
Код AS1/AS2:
function Define()
{	
	this.register = new Object();
 
	setRegister('library');
	setRegister('library.people','people_item');
 
	setRegister('link');
	setRegister('link.container','cont');
	setRegister('link.peoplebox',getRegister('link.container')+'.peoplebox');
	setRegister('link.peopleitem',getRegister('link.peoplebox')+'.items');
}
 
function Init()
{
	Define();
 
	//..........
 
	for (peopls in peopleBox)
	{
		var cast   :MovieClip = eval(getRegister('link.peopleitem'));
		var depth  :Number    = cast.getNextHighestDepth(); 
		var podcast:MovieClip = cast.attachMovie(getRegister('library.people'),'p_'+peopls,depth);
 
			// set property for podcast
			podcast._x = 0;
			podcast._y = cast._height + 10;
			//.......
 
		delete podcast;	
		delete depth;	
		delete cast;
	}
}
Init();
Суть в том что путя к мувиклипам берутся из "реестра" и присваиваются буферному мувику. Или же для ЦПУ проще такой алгоритм
Код AS1/AS2:
for (peopls in peopleBox)
	{
		eval('cont.peoplebox.items').attachMovie('people_item','p_'+peopls,cont.peoplebox.items.getNextHighestDepth());
 
		// set property for item
		eval('cont.peoplebox.items.p_'+peopls)._x = 0;
		eval('cont.peoplebox.items.p_'+peopls)._y = cont.peoplebox.items._height + 10;
		//.......
 
	}
Буду рад, если подскажите еще чё интересное что экономит время ЦПУ на обработку алгоритмов.
__________________
return this...


Последний раз редактировалось AlexCooper; 23.02.2011 в 11:48.
Старый 23.02.2011, 11:21
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 2  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
1. Чем меньше приаттаченного лишнего - тем лучше. Если даже элемент клипа имеет _visible=false, флэш его все равно прорисовывает. Это видно по Redraw Regions.

2. Про реестр вообще ничего не понял.
Если вам нужен массив с путями к клипам, то и храните эти пути. А все что надо из доп данных - вешайте себе прямо в клип.

мой_клип1.блок_данных.имя_свойства_1
мой_клип1.блок_данных.имя_свойства_2
мой_клип1.блок_данных.имя_свойства_3

И так далее. Как бы.
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 23.02.2011, 11:39
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 3  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Реестр я использую как массив (а точнее объект) данных, у меня он хранит практически всё. Очень удобно при написании кода. Ненужно запоминать длинные имена, нужно к примеру изменить свойство н-объекта,
Код AS1/AS2:
eval(getRegister('link.н-объект')).prop = val;
да и если какие коррективы вводятся достаточно изменить данные в реестре. Так же 100% доступность данных при разных "глубинах". + Трасировку всех данных можно произвести в два щелчка, но суть вопроса не в этом, есть ли разница между записями
Код AS1/AS2:
var item   :MovieClip = eval(clip);
item.prop1= val1;
item.prop2= val2;
......
item.propN= valN;
и
Код AS1/AS2:
 eval(clip).prop1= val1;
eval(clip).prop2= val2;
..............
eval(clip).propN= valN;
Добавлено через 1 минуту
Или Я слишком заморочился?)

Добавлено через 5 минут
За п1. Спасибо
__________________
return this...

Старый 23.02.2011, 12:25
Stargazer вне форума Посмотреть профиль Отправить личное сообщение для Stargazer Найти все сообщения от Stargazer
  № 4  
Ответить с цитированием
Stargazer

Регистрация: Nov 2008
Сообщений: 528
Прежде всего, могу предположить, что вам на самом деле не нужна подобная оптимизация. Если вы чувствуете, что ваша работа потребляет слишком много ресурсов - то, вероятно, ресурсы расходуются по каким-то другим причинам, нежели те пункты, что вы привели.


По-первому вопросу. Я считаю, что dark256 недостаточно обосновал своё мнение.

Я работаю с флешем постоянно уже 3 года и, можно сказать, что я профессионал в этом, однако я замеров такого рода не производил.

Насколько я знаю, флеш не стремится хранить в памяти те подклипы, которых в данный момент нет в кадре (не visible=false, а именно нет). Если вы перейдёте на другой кадр - флеш, по идее, освободит ненужные теперь подклипы и отправит их к сборщику мусора, и займётся созданием новых клипов, которые появились в этом кадре.

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


По второму вопросу. Если вам постоянно нужно работать с этими клипами - я бы советовал сохранить где-то их ссылки и пользоваться ссылками, не получая и не вычисляя их каждый раз.

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
2 Stargazer: Спасибо за изучение вопроса и ответ.
На данном этапе в фулскрине мувик при наделению мною максимальной нагрузки (перемещение всей сцены) Деспетчер задач показывает до 30% нагрузки на ЦП и при нормальном режиме до 10%, правда это еще малая часть проекта но считаю пока не плохим результатом.
__________________
return this...

Старый 23.02.2011, 14:15
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 6  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Самый главный совет: Переходите на AVM2 (as3).Там тоже нужна оптимизация, но во первых - сам рендер гораздо быстрее, во вторых - гораздо больше возможностей по разделению в самом языке.
__________________
Отряд Котовскага

Старый 23.02.2011, 14:21
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 7  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
Цитата:
Сообщение от AlexCooper Посмотреть сообщение
На данном этапе в фулскрине мувик при наделению мною максимальной нагрузки (перемещение всей сцены) Деспетчер задач показывает до 30% нагрузки на ЦП
Редкие флешки, даже созданные грамотными разработчиками, показывают хорошую производительность в полноэкранном режиме, если внутри них производится анимация более-менее приличного количества обьектов. Котяра вам верный совет дал - переходите на более современные версии Flash-платформы, будет быстрее. Но всё равно не сильно надейтесь на то, что полноэкранная флешка будет "летать".
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

Старый 23.02.2011, 14:51
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 8  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
На счёт полноэкранного режима я полностью с Вами согласен. Да и за АS3 согласен, но перейти смогу уже ближе к лету, когда закончиться контракт, сейчас же абсолютно нет времени и возможности переходить на третью версию экшена, а очень хочется, потому приходиться извращаться и подымать производительность по самым мелким "деталюшкам".
__________________
return this...

Старый 23.02.2011, 15:10
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 9  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Цитата:
1. Чем меньше приаттаченного лишнего - тем лучше. Если даже элемент клипа имеет _visible=false, флэш его все равно прорисовывает. Это видно по Redraw Regions.
Если cacheAsBitmap = true у элемента, то не перерисовывает.
__________________
hauts.ru

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

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

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


 


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


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