パフォーマンスの比較: Go でのスライスの追加と割り当て
Go でスライスを操作する場合、要素の追加や割り当てなどの操作は重要な影響を与える可能性があります。パフォーマンスへの影響。スライスの追加には 2 つの一般的なメソッドが使用できます:
append(slice, value): この関数は、新しい要素を収容できる拡張容量を持つ新しいスライスを作成し、既存の要素をnew slide.
slice[index] = value: この割り当ては、スライスの指定されたインデックスにある要素を、
これら 2 つのアプローチのパフォーマンスを比較するために、次の 2 つのベンチマーク関数が作成されました:
func BenchmarkSliceAppend(b *testing.B) { a := make([]int, 0, b.N) for i := 0; i < b.N; i++ { a = append(a, i) } } func BenchmarkSliceSet(b *testing.B) { a := make([]int, b.N) for i := 0; i < b.N; i++ { a[i] = i } }
結果は、slice[index] = value は append(slice, value):
BenchmarkSliceAppend-4 200000000 7.87 ns/op 8 B/op 0 allocs/op BenchmarkSliceSet-4 300000000 5.76 ns/op 8 B/op
パフォーマンスの違いを理解する
スライスの割り当てがスライスの追加よりも速いのはなぜですか?主な違いは、割り当てがコピーや再割り当てを必要とせずに既存のスライスを変更する単純なインプレース操作であるという事実です。一方、追加関数にはいくつかの手順が含まれます。以上がGo ではスライスの割り当てはスライスの追加よりも常に高速ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。