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

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
По умолчанию Оптимизация производительности

Доброго времени суток!

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

Итак, вопрос №1:
Имеется клип сформированный из однотипных элементов который можно описать как
"абвгд"; а,б,в,г,д,е...;
"абвгд"; а,б,в,г,д,е...;
"абвгд"; а,б,в,г,д,е...;
"абвгд"; а,б,в,г,д,е...;
Где "абвгд" - неменяющийся параметр, а второй параметр во время игры все время изменяется (уменьшается)
Вопрос в следующем, какой, с точки зрения быстродействия самый оптимальный способ отображения информации?
- аттачить нужное количество клипов?
- создать один клип с максимально возможным количеством клипов и если 1 клип не нужно отображать
1. уменьшать _alpha до 0
2. изменять _visible
3. создать клип с двумя кадрами и переключатся между ними (один кадр содержит информацию, другой - пустой)
Возможно есть другой вариант?

Вопрос №2:
Нужно сравнить 2 массива, члены которых тоже являются массивами.
Массив1: [[a, b, c, d], [a, b, c, d], [a, b, c, d]];
Массив2: [[a, d, c, f], [d, c, b, e], [e, j, a, c]]
В результате проверки не нужно узнавать какой из элементов "подмассива" массива соответствует другому в другом массиве, достаточно просто знать, что в первом и втором "подмассивах" имеются одинаковые члены.
Что лучше в таком случае?
Код:
for(i=0; i<_arr1.length; i++){
for(ii=0; ii<_arr2.length; ii++){
if(_arr1[i]==_arr2[i]){
// что-то сделать
break;
}
}
}
или
Код:
var _str = _arr1.join(",");
for(i=0; i<_arr2.length; i++){
if(_str.indexOf(_arr2[i])>-1){
// что-то сделать
}
}
Вопрос №3:
Слышал о том, что while работает быстрее чем for, есть ли действительно разница? Слышал еще и довольно странное мнение, что цикл вида
Код:
for(i=10; i>0;){
i--;
}
Будет выполнятся быстрее чем
Код:
for(i=0; i<10; i++){
}
Так ли это?

Вопрос №4:
Что быстрее перебрать циклом, свойства объекта или члены массива, узлы ХМЛя (мало ли, а вдруг...)?

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

Заранее спасибо.
__________________
Hell is the possibility of sanity

Старый 17.01.2007, 02:02
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 2  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
№1 - не совсем понял вопроса, но навярняка visible.
№2 - если элементов много, то вызов метода - смерть . В АС3 это особенно заментно. В больших циклах нужно избегать indexOf();
№3 - В АС3 самый быстрый цикл
Код:
var i:int = 0
while(i<9999999)
{
     // statements
     i+=1      // именно i+=1
}
засчёт типизации в АС3 наблюдается афигенное ускорение. В АС2 разницы не замечал.
№4 - свойства объекта или элементы массива - разницы в АС2 нет. Лучше проверять свойства экземпляра класса (в ас3 у экземпляров классов будет многократное ускорение).
В больших циклах я стараюсь избегать использование методов и .... массивов =)
код
Код:
obj.x+=1    // где obj - экземпляр класса, в котом объевлен член x 
// с точным типом     var x:Number;
В АС3, сработает на порядок быстрее, чем
Код:
obj['x']+=1        // где obj , массив
В АС1/2 разницы нет.
З.Ы. - В АС2 все объекты -нетипизированные массивы. Поэтому большого смысла в такой оптимизации нет.
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©


Последний раз редактировалось miramax; 17.01.2007 в 02:13.
Старый 17.01.2007, 03:14
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 3  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от miramax
В АС2 разницы не замечал.
[off]И не заметишь . Её не существует. Как и AS2 в принципе.[/off]

Старый 17.01.2007, 10:07
aksios вне форума Посмотреть профиль Отправить личное сообщение для aksios Найти все сообщения от aksios
  № 4  
Ответить с цитированием
aksios
loading 50%
 
Аватар для aksios

Регистрация: Jun 2005
Адрес: I am where I should be
Сообщений: 3,567
Отправить сообщение для aksios с помощью ICQ
Начет visible: надо еще stop добавлять, иначе будет кушать ресурс.

Старый 17.01.2007, 10:50
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 5  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Цитата:
З.Ы. - В АС2 все объекты -нетипизированные массивы. Поэтому большого смысла в такой оптимизации нет.
В AS1-2 все объекты это не массивы, а Хэш таблицы.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 17.01.2007, 13:15
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 6  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
вопрос №1 - вариант 3 - переход на пустой кадр.

Старый 17.01.2007, 13:19
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 7  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Вопрос первый вариант - "- аттачить нужное количество клипов"
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 17.01.2007, 13:43
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 8  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Спасибо за ответы.

chingachgoog
Интересно было бы узнать почему. Дело в том, что проект мне достался "по наследству", и в нем очень много вещей, которые бы я делал именно меняя свойства клипа (перекрашивание, изменение формы и т.п.) сделаны именно переходом на другой кадр.

Попробую переформулировать первый вопрос. Похоже, получилось не понятно:
Есть много фактически одинаковых клипов состояших из какого-то фона и текстбокса. Их количество в течение игры меняется от макс. 288 до мин. 0, смена происходит раз в 3 секунды.
Вот собственно, хочу выяснить как, с найменьшей нагрузкой на процессор можно менять их состояние (заполнен\пустой).
С аттачем есть определенные сложности, чтобы их аттачить в нужном порядке приходится запускать еще 1 цикл (который не нужно запускать в случае, если они все уже существуют).
__________________
Hell is the possibility of sanity

Старый 17.01.2007, 15:36
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 9  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Я имел в виду производительность связанную с появлением/убиранием мувиков со сцены.
Варианты с _alpha и _visible не катят, т.к. мувики продолжают нагружать процессор (например там идет анимация).
Вариант с аттачем уже лучше, но более сложен в реализации, чем вариант с пустым кадром. Что оптимальнее - через пустой кадр или аттач - не знаю.

PS покадровая анимация практически всегда быстрее чем программная или твиновая.

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

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

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


 


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


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