MATov блог

Scope Stack Allocation

Всем давно известно, особенно в геймдеве, что множественные аллокации это плохо по множеству причин, основные:

  • фрагментация памяти
  • время аллокаций
  • локальность выделяемой памяти

Первая проблема особенно остро стоит на платформах у которых этой самой памяти мало, например, мобильные устройства или консоли. Вторая – на всех платформах, тем или иным образом, потому что время аллокации не определено, стандартный аллокатор может задуматься, по только ему понятным причинам, перед тем как отдать вам память, что ни в какие ворота, когда у вас каждая миллисекунда на счету. Третья же проблема может встать в алгоритмах требовательных к локальности обрабатываемых данных, где нужно уменьшить промахи кэша.

В этой заметке я хотел бы рассказать как победить эти проблемы для временных аллокаций, особенно тех, которые делаются каждый кадр, а уж они-то должны быть быстрыми на сколько это возможно и не фрагментировать кучу совсем. »

Конструкторы и исключения

Очень многое написано про исключения в конструкторах, кто-то за, кто-то против, как правильно готовить и как делать не надо. Всё это есть у Маерса, в куче форумов и т.д. Я же напишу про известную, но мало затрагиваемую часть сего действа. »

Частичный typedef

В прошлой заметке я показал, как сделать аллокатор для stl контейнеров, но использовать это в сыром виде нереально, ибо такой код сломает руки и глаза. Попытаемся исправить ситуацию. »

Аллокации, теги и хуки. Часть 1

Раз уж начал говорить про память, покажу простой способ навешать теги на аллокации с возможность хука на них, с помощью которого можно сделать чудо вещи, например, трекинг памяти. »

Выровненные аллокации

Чтобы определиться в каком формате вести свой блог, я решил пописать некоторые маленькие «заметки на полях» аля «Tip of the day». Первая заметка посвящена выровненным аллокациям. »