G
Go tests
@golangtests7.9K подп.
2.6Kпросмотров
33.5%от подписчиков
26 января 2026 г.
📷 ФотоScore: 2.9K
👣 Понимание выравнивания памяти в Go В Go важно понимать, как компилятор размещает данные в памяти - это напрямую влияет на скорость работы и объём используемой памяти. Что такое выравнивание? Выравнивание памяти - это правило: данные должны находиться по адресам, кратным их размеру. Это нужно, чтобы процессор мог читать и записывать значения за одну операцию. Например: - int64 требует выравнивания по 8 байтам - int32 - по 4 байтам - byte - по 1 байту Если значение лежит “неудобно”, CPU делает несколько операций вместо одной - это медленнее. Почему появляется padding Компилятор Go автоматически вставляет пустые байты (padding) между полями структуры, чтобы соблюсти правила выравнивания. Размер структуры - это не просто сумма размеров полей. Пример: type Example struct { a byte // 1 байт b int64 // 8 байт (нужно выравнивание по 8) c byte // 1 байт } Хотя “полезных” данных тут 10 байт, структура занимает больше из-за вставленного паддинга. Почему это важно Если структура используется миллионы раз (в кэше, массивах, базах, сетевых пакетах), лишние байты превращаются в: • большее потребление памяти • худшее попадание в CPU cache • падение производительности Как оптимизировать • Порядок полей имеет значение. • Крупные типы лучше ставить первыми: type Optimized struct { b int64 a byte c byte } Так компилятору нужно меньше padding, и структура становится компактнее. Главное правило В Go порядок полей в структуре влияет на производительность. Выравнивание памяти - это не микроскопическая оптимизация. В высоконагруженных системах это даёт реальный прирост скорости и экономию памяти. Сохрани себе - пригодится при проектировании структур данных. Больше примеров
2.6K
просмотров
1740
символов
Нет
эмодзи
Да
медиа

Другие посты @golangtests

Все посты канала →
👣 Понимание выравнивания памяти в Go В Go важно понимать, к — @golangtests | PostSniper