現在、よく使われているコードをgoで最適化しています。私の質問は、次のコードスニペット(pprof listコマンドのメモリ割り当てでコピーされています)に至りました。あなたが見ることができるように、すべての割り当ては、マップが満たされている行(行959)で行われます。go mapのメモリ割り当てを最小限にする
ROUTINE ======================== cart.BenchmarkMapWithOutCapacityFixVal in /.../cart_test.go
3328966 3328966 (flat, cum) 15.50% of Total
. . 954:
. . 955:func BenchmarkMapWithOutCapacityFixVal(b *testing.B) {
. . 956: for i := 0; i < b.N; i++ {
. . 957: m := make(map[int]float32)
. . 958: for k := 0; k < 10; k++ {
3328966 3328966 959: m[k] = 0.434295723423
. . 960: }
. . 961: }
. . 962:}
私がやろうとしています何をここで
:まだそこに起こって配分されているのはなぜ
ROUTINE ======================== cart.BenchmarkMapWithCapacityFixVal in /.../cart_test.go
3214263 3214263 (flat, cum) 14.97% of Total
. . 963:
. . 964:func BenchmarkMapWithCapacityFixVal(b *testing.B) {
. . 965: for i := 0; i < b.N; i++ {
3048075 3048075 966: m := make(map[int]float32, 10)
. . 967: for k := 0; k < 10; k++ {
166188 166188 968: m[k] = 0.434295723423
. . 969: }
. . 970: }
. . 971:}
:私は起こって不要な割り当てが存在しないので、(内部)ループの前にメモリを割り当てるしようとしています968行目(2番目のサンプル)、内部ループの前にマップを正しく割り当てるにはどうすればよいですか?