Go의 지도 초기화 방법 성능 비교: make와 {}
Go에서는 두 가지 기본 방법을 사용하여 지도를 초기화할 수 있습니다.
<code class="go">var myMap map[string]int myMap = map[string]int{}</code>
vs.
<code class="go">myMap = make(map[string]int)</code>
이러한 접근 방식 간에 눈에 띄는 성능 차이가 있는지 의문이 듭니다.
성능 평가
성능 평가를 위해 맞춤형 테스트 패키지를 사용해 벤치마크 테스트를 진행했습니다. 여러 번의 실행에 대한 결과는 두 방법 간의 차이가 미미한 것으로 나타났습니다. 다음은 샘플 벤치마크 코드입니다.
<code class="go">package bench import "testing" var result map[string]int func BenchmarkMakeLiteral(b *testing.B) { var m map[string]int for n := 0; n < b.N; n++ { m = InitMapLiteral() } result = m } func BenchmarkMakeMake(b *testing.B) { var m map[string]int for n := 0; n < b.N; n++ { m = InitMapMake() } result = m } func InitMapLiteral() map[string]int { return map[string]int{} } func InitMapMake() map[string]int { return make(map[string]int) }</code>
벤치마크 결과
세 번의 개별 실행에 대한 벤치마크 결과는 다음과 같습니다.
$ go test -bench=. testing: warning: no tests to run PASS BenchmarkMakeLiteral-8 10000000 160 ns/op BenchmarkMakeMake-8 10000000 171 ns/op ok github.com/johnweldon/bench 3.664s
$ go test -bench=. testing: warning: no tests to run PASS BenchmarkMakeLiteral-8 10000000 182 ns/op BenchmarkMakeMake-8 10000000 173 ns/op ok github.com/johnweldon/bench 3.945s
$ go test -bench=. testing: warning: no tests to run PASS BenchmarkMakeLiteral-8 10000000 170 ns/op BenchmarkMakeMake-8 10000000 170 ns/op ok github.com/johnweldon/bench 3.751s
결론
이러한 벤치마크 결과에 따르면 map[string]int{}와 make(map[string]을 사용하여 지도를 초기화하는 것 사이에는 큰 성능 차이가 없습니다. 정수). 두 방법 모두 샘플 기계에서 거의 동일한 성능을 나타냅니다.
위 내용은 Go의 맵 초기화에서 `make`와 `{}` 사이에 성능 차이가 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!