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

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

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

Регистрация: Dec 2011
Сообщений: 9
По умолчанию Мобильные платформы и бассейн с объектами

Первый раз делаю игру, которую планируем портировать на IOS и другие мобильные платформы.
Пишут, что необходимо использовать object pool, для того чтобы избегать слова new во время выполнения приложения, так как это очень трудоемкая операция.
У меня, к сожалению, нет Айфона, чтобы потестить что он может.
И возник вопрос:
В каких случаях необходимо использовать object pool ?
Слово new критично только для визуальных объектов ( как в настольных приложениях ) или для всех объектов вообще ?

Старый 24.05.2012, 11:24
zuxul вне форума Посмотреть профиль Отправить личное сообщение для zuxul Найти все сообщения от zuxul
  № 2  
Ответить с цитированием
zuxul

Регистрация: Dec 2009
Адрес: 59°13′N, 39°54′E
Сообщений: 445
Записей в блоге: 1
Использовать object pool нужно только тогда, когда создается и удаляется большое количество объектов. Для всех других случаев сборщик мусора должен сработать оптимально.

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

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Вот хороший урок на эту тему. Действительно, object pool делает работу приложения более стабильной

Старый 25.05.2012, 01:19
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 4  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Цитата:
Сообщение от PainKiller Посмотреть сообщение
Вот хороший урок на эту тему.
http://active.tutsplus.com/tutorials...#comment-51246

Старый 25.05.2012, 10:37
r1kky вне форума Посмотреть профиль Отправить личное сообщение для r1kky Найти все сообщения от r1kky
  № 5  
Ответить с цитированием
r1kky

Регистрация: Dec 2011
Сообщений: 9
Спасибо за ответы.
Но меня интересует, что конкретно такого тормознутого происходит при создании нового объекта.
Выделяется память в стеке под ссылку (тут я так понимаю все быстро )
Выделяется память в куче под сам объект ( может тут ?)
И создается сам объект , если тут тогда имеет ли значение тип объекта
1. Обычный объект не визуальный
2. Натив флеш Sprite или MovieClip ( тут создается новый экземпляр картинки )
3. Stage3D объект из текстур, текстуры из текстуре атласа кот создан при запуске приложения. ( тоесть вроде бы новых экзепл не создается, только ссылки )

Старый 25.05.2012, 11:03
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 6  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
Цитата:
Сообщение от r1kky Посмотреть сообщение
Спасибо за ответы.
Но меня интересует, что конкретно такого тормознутого происходит при создании нового объекта.
Возьмите профайлер и посмотрите. Или тесты сделайте. Если у вас нет времени на профайлер и тесты, значит, оптимизацию проводить еще рано.

Цитата:
Выделяется память в стеке под ссылку (тут я так понимаю все быстро )
Вроде бы нет. Память на стеке выделяется при входе в метод, а не в процессе работы.

Цитата:
Выделяется память в куче под сам объект ( может тут ?)
Зависит от кучи. Вообще это тоже быстрая операция. Насколько быстрая - зависит от используемой кучи (во флеше вроде бы не самая быстрая куча).

Цитата:
И создается сам объект , если тут тогда имеет ли значение тип объекта
Имеет. И не только тип объекта, но и используемая платформа. Важно наличие "native" ресурсов, т.е. системных ресурсов и т.п.
Цитата:
1. Обычный объект не визуальный
Есть еще Sound, network connection и т.п.
Цитата:
2. Натив флеш Sprite или MovieClip ( тут создается новый экземпляр картинки )
Здесь может быть. Выделение системных объектов. Зависит и от наличия ускорения, например (объекты могут копироваться в видеопамять).
Цитата:
3. Stage3D объект из текстур, текстуры из текстуре атласа кот создан при запуске приложения. ( тоесть вроде бы новых экзепл не создается, только ссылки )
Здесь тоже могут быть вызовы системных методов для аллокации соответствующих структур в видеоускорителе.

Но в целом все операции достаточно быстрые. И ответ на ваш начальный вопрос будет: до тех пор, пока проблемы с производительностию (и их причны) явно не обозначены, object pool использовать не стоит. Есть всего одно нормальное показание к его использованию - объекты с заведомо тяжелой инициализацией, которые при этом часто используются (соединения с базой данных и т.п.). У вас таких изначально нет, так что пулы делать не стоит. Кроме того, совсем не факт, что именно аллокации объектов будут узким местом. Возможно, 90% всей работы будет отрисовка и нужно оптимизировать ее. Или будет неоптимальный алгоритм, который нужно оптимизировать.

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

Старый 25.05.2012, 12:00
r1kky вне форума Посмотреть профиль Отправить личное сообщение для r1kky Найти все сообщения от r1kky
  № 7  
Ответить с цитированием
r1kky

Регистрация: Dec 2011
Сообщений: 9
Шикарный ответ, спасибо
Мне просто кажется, что объекты с заведомо тяжелой инициализацией во флэш это спрайты и мувики, во всяком случае в Windows, но думаю в IOS также. Не думаю, что при создании объекта с 5 св-ми числами будут тормоза.
Но так как у меня игра на Старлинге, а там объект Sptite это просто ссылка на кусочек в текстуре атласе, думаю никакой необходимости в бассейне нет.

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

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

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


 


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


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