A-tit indd


Локальность данных (Data Locality) —  Паттерны программирования игр



Download 3,35 Mb.
Pdf ko'rish
bet270/313
Sana05.06.2022
Hajmi3,35 Mb.
#638392
1   ...   266   267   268   269   270   271   272   273   ...   313
Bog'liq
Nistrem R. Patterni programmirovaniya igr-1

368
Локальность данных (Data Locality) — 
Паттерны программирования игр
• Сущности пустые
. Конечно, недостаток опустоше-
ния сущностей в том, что 
приходится
перемещать 
из них все. Больше некуда поместить какое-то со-
стояние и поведение, не специфичное для компо-
нентов. Это повышает ставки использования пат-
терна Компонент (Component) (с. 272).
• Вам не нужно управлять жизненным циклом сущ-
ностей
. Поскольку сущности — это примитивные 
числовые значения, им не нужно выделять память, 
а затем освобождать ее. Сущность «умирает», когда 
уничтожаются все ее компоненты.
• Поиск компонента через сущность может быть мед-
ленным
. Проблема из предыдущего примера, но на-
оборот. Чтобы найти компонент для некоторой 
сущности, вам необходимо связать идентификатор 
с объектом. Процесс может оказаться затратным.
Теперь для поиска 
действительно
критична 
производительность. Компоненты часто общают-
ся друг с другом в период обновления, так что на-
ходить компоненты нужно быстро. Одно из ре-
шений — сделать «идентификатором» сущности 
индекс компонента в массиве.
Если у всех сущностей один и тот же набор ком-
понентов, то массивы компонентов будут парал-
лельны. Компонент в третьем слоте массива ком-
понентов ИИ будет относиться к той же сущности, 
что и компонент из третьего слота массива физиче-
ских компонентов.
Имейте в виду: чтобы массивы оставались па-
раллельными, придется прилагать 
усилия
. Это 
сложно, если вы решите отсортировать их по ка-
кому-то другому критерию. Например, вам пона-
добятся в начале сущности с отключенным компо-
нентом физики, а затем невидимые сущности. Нет 
способа отсортировать массивы компонентов фи-
зики и рендеринга оптимально в обоих случаях, 
если вам нужно сохранить их синхронность отно-
сительно друг друга.


Смотрите также
• Бо льшая часть этой главы опирается на паттерн 
Компонент (Component) (с. 272), и он определенно 
одна из самых распространенных структур данных, 
применяемая для оптимизации использования 
кэша. Фактически он упрощает оптимизацию. Так 
как сущности обновляются по одной «области» (ИИ, 
физика, рендеринг) за раз, разбиение их на компо-
ненты позволит вам поделить сущности на более 
удобные в плане работы с кэшем части.
Но этот паттерн можно использовать не 
только
с компонентами! Если у вас есть критичный к про-
изводительности код, обрабатывающий много дан-
ных, следует задуматься об их локальности.
• Pitfalls of Object-Oriented Programming Тони Аль-
брехта, вероятно, одна из самых популярных ин-
струкций на тему создания наиболее удобных в пла-
не работы с кэшем структур данных. Она заставила 
многих людей (включая меня!) понять, насколько 
сильно кэш влияет на производительность.
• Примерно в то же время Ноэль Ллопис опублико-
вал в своем блоге пост на ту же тему Data-Oriented 
Design (Or Why You Might Be Shooting Yourself in The 
Foot With OOP).
• Этот паттерн использует практически все преиму-
щества цельного массива однородных объектов. 
Со временем вы, скорее всего, будете добавлять 
туда объекты или удалять их. Паттерн Пул объек-
тов (Object Pool) (с. 388) вам в помощь.
• Игровой движок Artemis — один из первых фрейм-
ворков, где вместо сущностей стали использовать-
ся простые числовые идентификаторы.



Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   266   267   268   269   270   271   272   273   ...   313




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish