Перейти в канал

Tg: habr.com

1
Выравнивание данных съедает до 60% объёма памяти Обычная структура C++ на 40 байт кажется безобидной, пока не инстанцируется миллион раз. Всё упирается в padding-отступы, из-за которых массивы пухнут на десятки мегабайт. Базовая перестановка полей от большего к меньшему сразу убирает лишние «дыры». Настоящий хардкор начинается при упаковке булевых флагов в маски и растворении enum в нулевых младших битах указателя. Без изменения логики размер объекта сжимается с 40 до 16 байт. Ещё помогают union и квантизация float. Изучим методы экстремального сжатия.