Go에서 슬라이스 추가 및 할당 성능 비교
Go에서 슬라이싱은 데이터를 효율적으로 관리하는 데 중요한 역할을 합니다. 그러나 일반적으로 사용되는 두 가지 슬라이스 작업인 추가와 할당 사이의 성능 차이에 대한 의문이 제기됩니다.
추가 및 할당
append() 작업은 기존 슬라이스를 확장합니다. 추가 요소를 사용하는 반면 할당 연산자(=)를 슬라이스에 적용하면 단순히 기존 요소를 새 값으로 덮어씁니다.
성능 분석
다음 코드 벤치마킹 성능 격차를 보여줍니다.
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 } }
벤치마크 결과는 "a[i] = i"(할당)가 "a = 추가(a, i)"(추가)보다 지속적으로 성능이 뛰어난 것으로 나타났습니다.
BenchmarkSliceAppend 200000000 7.87 ns/op 8 B/op 0 allocs/op BenchmarkSliceSet 300000000 5.76 ns/op 8 B/op
설명
"a[i] = i"의 성능이 더 빠른 것은 직접 할당 특성 때문일 수 있습니다. 이는 단순히 i 값을 슬라이스의 해당 요소에 할당합니다.
반면 "a = 추가(a, i)"에는 일련의 작업이 포함됩니다.
이러한 추가 단계는 "a[i] = i의 직접 할당에 비해 오버헤드를 발생시킵니다. ".
결론
슬라이스 작업 간의 성능 차이를 이해하는 것은 코드 효율성을 최적화하는 데 중요합니다. 간단한 값 할당의 경우 "a[i] = i"가 더 효율적인 선택임이 입증되었습니다. 그러나 슬라이스 확장이 필요한 경우 "a = 추가(a, i)"가 여전히 적절한 접근 방식입니다.
위 내용은 Go에서 `append()`와 슬라이스 할당 중 어느 것이 더 빠릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!