성능 비교: Go에서 슬라이스 추가와 할당
Go에서 슬라이스로 작업할 때 요소 추가 및 할당과 같은 작업은 상당한 영향을 미칠 수 있습니다. 성능에 미치는 영향. 슬라이스 추가를 위한 두 가지 일반적인 방법을 사용할 수 있습니다:
append(slice, value): 이 함수는 새 요소를 수용할 수 있도록 확장된 용량을 가진 새 슬라이스를 생성하고 기존 요소를 new Slice.
slice[index] = value: 이 할당은 생성하지 않고 슬라이스의 지정된 인덱스에 있는 요소를 직접 수정합니다. 새로운 사본.
이 두 접근 방식의 성능을 비교하기 위해 다음 두 가지 벤치마크 함수가 생성되었습니다.
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, 값):
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!