セットをシミュレートするには、MyType 型のキーを型の値と関連付けるマップを使用します。空のインターフェイスまたは空の構造体。どちらのアプローチでも、効果的なセットのエミュレーションが可能になります。ただし、この 2 つのどちらを選択するかはメモリに影響します。
メモリ使用量の比較
安全でないパッケージを使用すると、さまざまなデータ型のメモリ消費量を確認できます。たとえば、32 ビット アーキテクチャでは、空の構造体 (struct{}) のメモリ使用量は 0 バイト、空のインターフェイス (interface{}) は 8 バイト、ブール値 (bool) は 1 バイトを使用します。 64 ビット アーキテクチャでは、構造体は 0 バイトのメモリ フットプリントを維持し、インターフェイスは 16 バイトに増加し、ブール値は 1 バイトのままです。
結論
マップを使用してセットをシミュレートする場合、値の型として空の構造体を利用すると、空のインターフェイスを使用する場合に比べてメモリ上の大幅な利点が得られます。構造体を選択すると、各マップ エントリのメモリ オーバーヘッドが効果的に削減されます。この最適化は、大規模なデータセットやメモリに制約のある環境を扱う場合に特に価値があります。
以上がGo マップの空の構造体と空のインターフェイス: セットのメモリ最適化に優れているのはどちらですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。