Golang での文字列メモリ使用量
コードの最適化では、メモリ使用量の考慮が必要になることがよくあります。値が「A」または「B」のいずれかである、map[string]string の例を調べてみましょう。必要なメモリが少なくなるため、代わりに map[string]bool を使用するのが論理的であるように思えます。
しかし、テストの結果、驚くべき結果が判明しました。単一の文字を含む文字列 ("a") と非常に長い文字シーケンスを含む文字列 ("a2") のメモリ使用量は同じでした。
この動作を理解するには、Go がどのように動作するかを考える必要があります。文字列とマップのメモリを処理します。
Go のメモリを理解する
実際のメモリ使用量の計算
マップまたは文字列の実際のメモリ要件を決定するには、マップまたは文字列に含まれるデータを考慮する必要があります。
stringSize := len(str) + int(unsafe.Sizeof(str))
追加の考慮事項
要約すると、unsafe.Sizeof() はメモリ使用量に関する洞察を提供しますが、完全な画像は提供しません。メモリを正確に計算するには、実際のデータ構造とその内容を考慮してください。
以上がGo の短い文字列と長い文字列のメモリ使用量が同じように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。