A-tit indd


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



Download 3,35 Mb.
Pdf ko'rish
bet256/313
Sana05.06.2022
Hajmi3,35 Mb.
#638392
1   ...   252   253   254   255   256   257   258   259   ...   313
Bog'liq
Nistrem R. Patterni programmirovaniya igr-1

350
Локальность данных (Data Locality) — 
Паттерны программирования игр
более сложные инструменты. Вам и правда захочется 
увидеть, сколько случается промахов и где.
К счастью, существуют специальные програм-
мы проверок производительности, или профайлеры 
(profi lers). Стоит потратить немного времени на внедре-
ние одной и убедиться, действительно ли вы понимае-
те те (на удивление сложные) цифры, которые она дает 
на выходе, прежде чем кромсать свои структуры данных.
Пропуски кэша 
будут
влиять на производительность. 
И хотя не стоит тратить уйму времени на предваритель-
ную оптимизацию, не забывайте о том, что данные 
лучше организовать в пригодной для кэша форме еще 
на стадии проектирования.
Имейте в виду
Одна из отличительных черт архитектуры программ-
ного обеспечения —
абстракция
. Большая часть книги 
посвящена паттернам, которые уменьшают связанность 
двух частей кода, позволяя программисту изменять их 
независимо друг от друга. В объектно-ориентирован-
ных языках это почти всегда делается через интерфейсы.
В С++ использование интерфейсов означает доступ 
к объектам через указатели и ссылки. Но переход по ука-
зателю представляет собой прыжок в памяти, который 
и вызывает промах кэша, а данный паттерн создан, что-
бы подобного избежать.
Чем больше вы строите архитектуру своей програм-
мы вокруг локальности данных, тем чаще придется от-
казываться от наследования, интерфейсов и их преиму-
ществ соответственно. Не существует универсального 
решения, только компромиссы. Но это же весело!
Пример кода
Если вы готовы заглянуть в кроличью нору и попасть 
в страну локальности данных, вы найдете несчитанное 
множество методов разделить ваши структуры данных 
К несчастью, большин-
ство из таких инструмен-
тов весьма дорогие. 
Если вы работаете 
в команде разработчи-
ков для игровых консо-
лей, то, скорее всего, 
у вас уже есть какая-
нибудь лицензия.
Если нет, то хороший 
бесплатный вариант —
Cachegrind. Он запу-
скает вашу программу 
поверх симуляции про-
цессора с иерархией па-
мяти, а затем дает отчет 
о взаимодействии 
с кэшем.
Другая сторона интер-
фейсов —
вызовы вирту-
альных методов
. Они 
вынуждают процессор 
заглядывать внутрь таб-
лицы виртуальных мето-
дов объекта, находить 
указатели на сам метод, 
который нужно вызвать. 
И вы снова используете 
указатели, вызывающие 
промахи кэша.



Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   252   253   254   255   256   257   258   259   ...   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