Wyrównanie struktury danych w C++

Opublikowane: 17/01/2015

w kategorii Zasoby.

Pracując na szybkością lub z zewnętrznymi bibliotekami czasami potrzebujesz dokładnie kontrolować ułożenie bajtów w swoich strukturach danych.

Jest kilka tematów z tym związanych:

  • wyrównanie: określasz ile bajtów ma być przydzielonych dla struktury lub zmiennej i gdzie mają się one zaczynać (optymalizacja ofsetu dla cache'a)
  • padding: określanie dodatkowych bajtów w celu startowania następnej zmiennej na pozycji przyjaznej cache'owi
  • porządkowanie: organizowanie atrybutów struktury tak żeby padding nie był wymagany lub był minimalny
  • pola bitowe: pakowanie kilku atrubutów struktury w jeden lub więcej bajtów

Porządkowanie (ang. reordering) zwykle jest wykonywane przez sortowanie atrybutów po rozmiarze (od największego do najmniejszego). To zapewnia że automatyczne uzupełnianie struktury o dodatkowe bajty jest minimalne.

Wprowadzenie

Wyrównanie struktury

Poradniki

Padding

Pola bitowe

Udostępnij

obserwuj