こんにちは、いくつかの練習をしながら、私はこの質問に出くわしました...
あなたは100,000の容量を持つ地図を持っていると言います。
最低限の時間で地図全体を埋めるのに最も効率的なのはどれですか?私は私が考えることができタイプと結果のトップリストのほとんどを試して自分自身にいくつかのベンチマークを実行したしました最も効率的なゼロ値はどれですか?
です:
Benchmark_Struct-8 200 6010422 ns/op (struct{}{})
Benchmark_Byte-8 200 6167230 ns/op (byte = 0)
Benchmark_Int-8 200 6112927 ns/op (int8 = 0)
Benchmark_Bool-8 200 6117155 ns/op (bool = false)
例機能:
func Struct() {
m := make(map[int]struct{}, 100000)
for i := 0; i < 100000; i++ {
m[i] = struct{}{}
}
}
最も速いものが表示されます(ほとんどの場合)は01型です- 空の構造体。
- しかし、なぜこれが場合であるがに行きますか?
- より速い/軽いゼロまたはゼロ以外の値がありますか?
は - お時間をいただき、ありがとうございます:)
一度も使用されていないマップに空の値を多く追加するのにかかる時間は、一般的な使用例ではないと思います。基本的には、異なる種類のマップを展開するために使用されるマシンコードをテストするだけです。何か違いがあれば、全体的なメモリ使用量はほとんどのプログラムに関連します。私は個人的にbool値を持つのが好きなので、 '、ok'はキーの存在を確認する必要はありません。 – JimB
これは有用ではあるが、その速度差がそれほど大きくないため、関連性がない状況があります。興味深いことに(boolについて)。ありがとう。 – Mihailo