|
|
|||||
Объектный пул.
Как я себе представляю, что такое пул.
Пул - это массив объектов, которые заранее инициализируются, и если неизвестно, сколько из них может понадобиться, при нехватке инициализируются ещё. Объекты в пуле хранятся для отсутствия необходимости в создании новых объектов на лету в работе программы. Это позволяет экономить производительность за счёт заранее забронированной памяти. Как правило, свойства объекта сбрасываются на свойства по умолчанию, при условии, что затем нужны свойства по-умолчанию, и не сбрасываются, если в последствии они устанавливаются в нужные. Почему я создал тему: Возник спор, который заключается в следующем: Есть массив неких объектов с данными, которые хранят местоположения объектов на карте, и ещё некоторую информацию об объектах(1 объект в массиве представляет 1 объект на карте). Тот, кто работает над проектом называет это "объектный пул", при этом вытаскивая не первый попавшийся объект, а ищет объект с нужными координатами, чтобы получить его другие значения. Почему я считаю, что это не пул? Я уже описал, как я представляю себе пул. Я считаю, что объект из пула должен доставаться либо чистым, либо его свойства должны быть перезаписаны перед использованием. Но то, что представлено больше похоже на обычную базу данных с доставанием значений по ключам. //Объясните же мне, почему я неправ и что же на самом деле пул.
__________________
There is no thing in this world that is not simple. |
|
|||||
Lorem ipsum
|
Это не пул.
И да, пул (в моем понимании) не столько (не только?) резервирует память, сколько экономит время на выполнение конструктора, т.е. на создание объекта, и, как следствие, время, которое GC откусит на уборку уже отработанных объектов.
__________________
Поймай яблоко 2! |
|
|||||
Цитата:
Суть такая: есть класс ObstaclePool с набором статических методов. При запуске локации туда передается XML инструкция для создания объектов, которая сгенерирована редактором локаций. Этот пул создает необходимые объекты. Но не просто так в том количестве, в котором они прописаны в XML, а с максимальной экономией памяти. То есть если 2 объекта одного типа не могут одновременно быть отображены на экране, то и нет смысла создавать два объекта. Будет исползоваться один и тот же, просто его значения будут меняться в соответствии с теми значениями, которые заданы для его координат. Все эти настройки координат хранятся в спецаильной обертке ObjectWrapper internal class ObstacleWrapper { public var obstacle: Obstacle = null; public var isDestroyed: Boolean = false; public var posX: int = 0; public var posY: int = 0; public var health: int = 0; public function ObstacleWrapper() { } } Но Захар мне упорно пытается доказать, что значения должны быть сброшены на значения по умолчанию при извлечении объекта из пула. А если этого не происходит, то это совсем не пул) |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
https://ru.wikipedia.org/wiki/%D0%9E...BF%D1%83%D0%BB
Гугл пестрит определениями того, что есть объектный пул. |
|
|||||
Цитата:
|
|
|||||
Именно, это просто массив данных об объектах, или "карта объектов", которая хранит не только позицию, а и другие свойства объекта, повреждение и т.д.
__________________
There is no thing in this world that is not simple. |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
caseyryan, почему ты считаешь, что это именно объектный пул, а не объектный массив?
|
|
|||||
Lorem ipsum
|
Ну тогда у тебя целый завод, а не пул там у тебя все, и пул в том числе.
__________________
Поймай яблоко 2! |
|
|||||
Цитата:
Главное что определению пула это соответствует. Объекты создаются один раз при запуске, а потом используются во всем процессе игры одни и те же Цитата:
Но основная задача - все-таки пул |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Цитата:
Цитата:
|
Часовой пояс GMT +4, время: 11:44. |
|
« Предыдущая тема | Следующая тема » |
|
|