![]() |
Объектный пул.
Как я себе представляю, что такое пул.
Пул - это массив объектов, которые заранее инициализируются, и если неизвестно, сколько из них может понадобиться, при нехватке инициализируются ещё. Объекты в пуле хранятся для отсутствия необходимости в создании новых объектов на лету в работе программы. Это позволяет экономить производительность за счёт заранее забронированной памяти. Как правило, свойства объекта сбрасываются на свойства по умолчанию, при условии, что затем нужны свойства по-умолчанию, и не сбрасываются, если в последствии они устанавливаются в нужные. Почему я создал тему: Возник спор, который заключается в следующем: Есть массив неких объектов с данными, которые хранят местоположения объектов на карте, и ещё некоторую информацию об объектах(1 объект в массиве представляет 1 объект на карте). Тот, кто работает над проектом называет это "объектный пул", при этом вытаскивая не первый попавшийся объект, а ищет объект с нужными координатами, чтобы получить его другие значения. Почему я считаю, что это не пул? Я уже описал, как я представляю себе пул. Я считаю, что объект из пула должен доставаться либо чистым, либо его свойства должны быть перезаписаны перед использованием. Но то, что представлено больше похоже на обычную базу данных с доставанием значений по ключам. //Объясните же мне, почему я неправ и что же на самом деле пул. |
Это не пул.
И да, пул (в моем понимании) не столько (не только?) резервирует память, сколько экономит время на выполнение конструктора, т.е. на создание объекта, и, как следствие, время, которое GC откусит на уборку уже отработанных объектов. |
Цитата:
Суть такая: есть класс ObstaclePool с набором статических методов. При запуске локации туда передается XML инструкция для создания объектов, которая сгенерирована редактором локаций. Этот пул создает необходимые объекты. Но не просто так в том количестве, в котором они прописаны в XML, а с максимальной экономией памяти. То есть если 2 объекта одного типа не могут одновременно быть отображены на экране, то и нет смысла создавать два объекта. Будет исползоваться один и тот же, просто его значения будут меняться в соответствии с теми значениями, которые заданы для его координат. Все эти настройки координат хранятся в спецаильной обертке ObjectWrapper Код AS3:
Но Захар мне упорно пытается доказать, что значения должны быть сброшены на значения по умолчанию при извлечении объекта из пула. А если этого не происходит, то это совсем не пул) |
https://ru.wikipedia.org/wiki/%D0%9E...BF%D1%83%D0%BB
Гугл пестрит определениями того, что есть объектный пул. |
Цитата:
|
Именно, это просто массив данных об объектах, или "карта объектов", которая хранит не только позицию, а и другие свойства объекта, повреждение и т.д.
|
caseyryan, почему ты считаешь, что это именно объектный пул, а не объектный массив?
|
Ну тогда у тебя целый завод, а не пул :) там у тебя все, и пул в том числе.
|
Цитата:
Главное что определению пула это соответствует. Объекты создаются один раз при запуске, а потом используются во всем процессе игры одни и те же Цитата:
Но основная задача - все-таки пул |
Цитата:
Цитата:
|
Пул (бассейн) — это по сути массив молекул воды, только без доступа по индексу, так что да :)
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Про клоаку — туфта какая-то. Кто сказал, что у caseyryan объект после возвращения в пул становятся "непригодными для дальнейшего использования"?
|
Что-то мне подсказывает, что этот спор ничем не увенчается. Не важно какие есть примеры в интернете. Примеры на то и примеры, чтобы показывать общую суть. А реализаций может быть очень много. Я одних синглтонов встречал штук 7 или 10 разных реализаций. А суть все равно у всех одна - возвращать ссылку на один и тот же созданный заранее экземпляр. И пул обязан делать по шаблону, который где-то там кем-то написан. Главное что общая идея его такая же. А какие я вспомогательные функции добавил и с какой целью - это уже не имеет значения.
|
Цитата:
Цитата:
|
Вот что бывает, когда все становится таким сложным.
caseyryan просто мог бы таки разделить логику хранения актуальных данных, необходимых в текущий момент времени и простенький пул для примитивного дайсюда/положиназад. А сейчас это не пул. |
Цитата:
|
Цитата:
|
Цитата:
|
Никогда не заморачивался с пулами.
Код AS3:
|
Цитата:
А вот здесь встала необъодимость придумать такую систему. Потому что художник делает огромные локации с больишм количеством объектов. Его аргумент - если делать мало всего и все время подстраиваться под производительность устройства, то игра будет неинтересной и скучной. И он прав. Поэтому пришлось приудмать способ расставлять столько объектов, сколько он хочет, с минимальной нагрузкой на память и процессор. Игра все-таки мобильная |
Если рассматривать пул концептуально, как хранилище объектов для возможности повторного использования, то по сути пулом всё что угодно можно обозвать, абы соответствовало некой абстракции. Но если о шаблоне говорить, то шаблон несколько иной.
|
Долой шаблонное мышление! Да здравствуют концепты! :D
|
Цитата:
|
Цитата:
|
Мсье знает толк! :)
|
Цитата:
|
Сорян, я имел в виду это
Цитата:
|
| Часовой пояс GMT +4, время: 01:48. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.