Detaillierte Erläuterung der Verwendung der Byte-Ausrichtung in Golang
藏色散人
Freigeben: 2021-09-10 16:42:27
nach vorne
2376 Leute haben es durchsucht
Dieser Artikel wird Ihnen durch die Go-SpracheTutorial-Kolumne über Golang-Byte-Ausrichtung vorgestellt. Ich hoffe, dass er Freunden in Not hilfreich sein wird!
Eine der Strukturen nimmt relativ viel Platz ein und ich habe mich gefragt, ob es Raum für Optimierung gibt Wenn Sie die Byte-Ausrichtung in der C-Sprache verstehen, können Sie einfach die Reihenfolge der Felder anpassen. Diese Idee gilt auch für die grundlegende Datengröße. Schauen wir uns vorher die Größe an der von den darin enthaltenen Grundtypen belegten Daten
Obwohl der Bool-Typ nur ein Bit hat, muss er auch 1 Byte belegen, da der Computer eine Byte-Einheit ist64-Maschine, und ein int belegt 8 Wörter Abschnitt String-Typ belegt 16 Bytes, enthält intern einen Zeiger auf Daten (8 Bytes) und die Länge eines int (8 Bytes).
Slice-Typ belegt 24 Bytes, enthält intern einen Zeiger auf Daten. Der Zeiger (8 Bytes) und die Länge eines int (8 Bytes) und die Kapazität eines int (8 Bytes)
Der Kartentyp belegt 8 Bytes und ist ein Zeiger auf die Kartenstruktur.
Kann struct{} verwenden, um einen leeren Typ darzustellen keinen Platz belegen. Sie können die Karte als Satz verwenden.
Byte-Ausrichtung
Die Felder in der Struktur sind nicht kompakt im Speicher angeordnet, sondern werden beispielsweise nach Bytes ausgerichtet Wenn int 8 Bytes belegt, kann es nur an eine Adresse geschrieben werden, die ein Vielfaches von 8 ist. Der Grund, warum eine Byteausrichtung erforderlich ist, dient hauptsächlich Effizienzüberlegungen. Ich habe die Theorie im Internet genauer gelesen, aber ich Ich glaube, es ist nicht sehr zuverlässig, deshalb werde ich keinen Unsinn reden. Wenn Sie interessiert sind, können Sie es selbst studieren. Kapseln Sie einfach eine int8-Struktur, die mit int8 identisch ist, nur 1 Byte einnimmt und kein zusätzliches Byte enthält Platz.
Hier ist zu beachten, dass int64 nur bei Adressen erscheinen kann, die ein Vielfaches von 8 sind , also sind die ersten 4 aufeinanderfolgenden Bytes in der Struktur leer
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung der Byte-Ausrichtung in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn