Golang에서 슬라이스 추가 및 할당 성능 비교
Golang에서는 슬라이스에 요소를 추가하는 두 가지 일반적인 방법이 있습니다. 함수를 추가하거나 슬라이스 인덱스에 값을 직접 할당합니다. 이러한 메서드 간의 성능 차이를 이해하려면 다음 코드를 고려하세요.
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 =append(a, i)보다 훨씬 뛰어난 것으로 나타났습니다.
BenchmarkSliceAppend-4 200000000 7.87 ns/op 8 B/op 0 allocs/op BenchmarkSliceSet-4 300000000 5.76 ns/op 8 B/op
성능 차이의 이유
성능 차이는 각 메소드에서 수행하는 기본 작업에서 비롯됩니다. a[i] = i는 단순히 i 값을 슬라이스의 i번째 요소에 할당하는데, 이는 간단하고 효율적인 작업입니다.
반면, a = append(a, i)에는 더 복잡한 프로세스가 포함됩니다.
이러한 추가 복사 및 할당은 다음에 기여합니다. 추가 메서드의 성능 오버헤드로 인해 직접 할당에 비해 실행 시간이 느려집니다.
결론
슬라이스에 요소를 추가하려면 a[i] = i는 더 간단하고 빠른 작업으로 인해 a =append(a, i)보다 더 효율적인 옵션입니다. 슬라이스 조작 작업에 대한 코드 성능을 최적화할 때 이 점을 염두에 두십시오.
위 내용은 Golang에서 슬라이스 추가 또는 직접 할당 중 어느 것이 더 빠릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!