問題:
キー/値エントリ内の文字列を次を使用してディスクにエンコードするエンコード/ゴブは、不必要なオーバーヘッドにより過度の肥大化を引き起こします。目的の出力形式には型定義が省略され、生のバイトと文字列の長さのみが含まれます。
分析:
エンコーディング/gob の初期肥大化は型の組み込みに起因します。エンコードされたストリーム内の定義。これらの定義が送信されると、同じ型の後続の値には最小限のオーバーヘッドしか発生しないため、複数の値を効率的にエンコードできます。
解決策:
不必要な肥大化を排除するには、encoding/gob パッケージは使用しないでください。代わりに、次のオプションを検討してください:
デモ:
次の表は、エントリあたりのエンコードされたサイズを比較しています。異なるものを使用してメソッド:
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% |
推奨事項:
最も実際的なシナリオでは、compress/gzip または compress/zlib を使用すると、圧縮率とパフォーマンスのバランスが取れます。ただし、ディスク容量の制約が非常に厳しい場合は、効率が若干低下しますが、優れた圧縮機能を備えた bzip2 の使用を検討してください。
以上がGo Struct のディスクへのシリアル化を最小サイズに最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。