Хотя этот документ не относится конкретно к играм, он предоставляет хороший обзор типов пользовательских распределителей памяти, которые люди часто используют в приложениях на C и C ++ для повышения производительности (и это немного предостерегающая история).
Пересмотр пользовательского выделения памяти , Berger, Zorn & McKinley, OOPSLA 2002
Программисты, надеющиеся добиться улучшения производительности, часто используют пользовательскиераспределители памяти.В этом углубленном исследовании рассматриваются восемь приложений, использующих пользовательские распределители.Удивительно, что для шести из этих приложений современный распределитель общего назначения (распределитель Lea) работает так же хорошо или лучше, чем пользовательские распределители.В двух исключениях используются регионы, которые обеспечивают более высокую производительность (улучшение до 44%).Регионы также уменьшают нагрузку на программиста и устраняют источник утечек памяти.Однако мы показываем, что неспособность программистов освободить отдельные объекты внутри регионов может привести к значительному увеличению потребления памяти.Хуже того, это ограничение исключает использование областей для общих идиом программирования, снижая их полезность.Мы представляем обобщение универсальных и региональных распределителей, которые мы называем пожинаниями.Рипы представляют собой комбинацию областей и куч, обеспечивая полный диапазон семантики областей с добавлением удаления отдельных объектов.Мы показываем, что наша реализация reaps обеспечивает высокую производительность, опережая другие распределители с региональной семантикой.Затем мы используем тематическое исследование, чтобы продемонстрировать космические преимущества и преимущества программных разработок, полученных на практике.Наши результаты показывают, что программисты, которым нужны быстрые регионы, должны использовать reaps, и что большинство программистов, рассматривающих пользовательские распределители, должны вместо этого использовать распределитель Lea.