Problem:
Kodierung von Zeichenfolgen in Schlüssel-/Werteinträgen auf der Festplatte mit Encoding/gob führt aufgrund unnötigen Overheads zu einer übermäßigen Aufblähung. Das gewünschte Ausgabeformat lässt Typdefinitionen weg und enthält nur die Rohbytes und Zeichenfolgenlängen.
Analyse:
Die anfängliche Aufblähung bei „Encoding/Gob“ ist auf die Einbeziehung des Typs zurückzuführen Definitionen im codierten Stream. Sobald diese Definitionen übertragen werden, verursachen nachfolgende Werte desselben Typs nur minimalen Overhead, was die Codierung mehrerer Werte effizient macht.
Lösung:
Um unnötiges Aufblähen zu vermeiden , sollte das Paket „encoding/gob“ nicht verwendet werden. Ziehen Sie stattdessen die folgenden Optionen in Betracht:
Demonstration:
Die folgende Tabelle vergleicht die codierte Größe pro Eintrag anders nutzen Methoden:
Method | Encoded Size (Bytes) | Compression Ratio |
---|---|---|
Naked Output | 16.04 | 100% |
Flate | 4.12 | 26% |
Zlib | 4.13 | 26% |
Gzip | 4.14 | 26% |
Bzip2 | 2.04 | 12.7% |
Empfehlung:
In den meisten praktischen Szenarien bietet die Verwendung von compress/gzip oder compress/zlib ein gutes Gleichgewicht zwischen Komprimierungsverhältnis und Leistung. Wenn die Speicherplatzbeschränkung jedoch extrem eng ist, sollten Sie die Verwendung von bzip2 aufgrund seiner überlegenen Komprimierungsfunktionen auf Kosten einer leicht verringerten Effizienz in Betracht ziehen.
Das obige ist der detaillierte Inhalt vonWie kann ich die Go-Struct-Serialisierung auf die Festplatte für eine minimale Größe optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!