Strukturpolsterung ist das Hinzufügen zusätzlicher Bytes zu einer Datenstruktur, um sicherzustellen, dass sie bestimmte Ausrichtungsanforderungen erfüllt. Dies geschieht, um die Leistung bestimmter Vorgänge wie Speicherzugriff und Gleitkommaberechnungen zu verbessern.
Die Ausrichtung einer Datenstruktur bezieht sich auf die Position ihrer Mitglieder im Speicher. Bei einigen Prozessoren müssen Daten an bestimmten Grenzen ausgerichtet werden, beispielsweise an 4-Byte- oder 8-Byte-Grenzen. Wenn eine Datenstruktur nicht richtig ausgerichtet ist, muss der Prozessor möglicherweise zusätzliche Arbeit leisten, um auf seine Mitglieder zuzugreifen, was die Leistung verlangsamen kann.
Durch Strukturauffüllung kann sichergestellt werden, dass eine Datenstruktur den Ausrichtungsanforderungen des Zielprozessors entspricht. Betrachten Sie beispielsweise die folgende Struktur:
„
Strukturpunkt {
int x;
int y;
};
„
Auf einem 32-Bit-Prozessor ist diese Struktur 8 Byte lang, wobei das „x“-Element bei Speicheradresse 0 und das „y“-Element bei Speicheradresse 4 beginnt. Wenn der Prozessor jedoch eine 4-Byte-Ausrichtung erfordert, muss das „ Das y`-Mitglied würde tatsächlich bei Speicheradresse 8 beginnen und zwischen den beiden Mitgliedern eine Lücke von 4 Bytes lassen. Diese Lücke wird als Padding bezeichnet .
Strukturpolsterung kann auch verwendet werden, um die Leistung von Gleitkommaberechnungen zu verbessern. Einige Prozessoren verwenden spezielle Anweisungen für Gleitkommaoperationen, die eine Ausrichtung der Operanden an bestimmten Grenzen erfordern. Durch das Hinzufügen von Auffüllungen zu einer Datenstruktur können Sie sicherstellen, dass ihre Gleitkomma-Elemente richtig ausgerichtet sind, was die Leistung von Gleitkomma-Berechnungen verbessern kann.
Der für eine Datenstruktur erforderliche Abstand hängt vom Zielprozessor und den Ausrichtungsanforderungen seiner Mitglieder ab. Einige Compiler bieten Optionen zum automatischen Hinzufügen von Auffüllungen zu Strukturen. Alternativ können Sie Auffüllungen manuell hinzufügen, indem Sie leere Elemente in die Struktur einfügen.