>  기사  >  백엔드 개발  >  Go에서 지도 초기화 시 \"make\"와 \"{}\" 사이에 성능 차이가 있나요?

Go에서 지도 초기화 시 \"make\"와 \"{}\" 사이에 성능 차이가 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-11-01 01:11:02710검색

 Is There a Performance Difference Between

Go에서 "make"와 "{}"를 사용하여 초기화된 맵 간의 성능 차이 공개

Go에서 개발자는 유연성을 갖습니다. "make"와 "{} 구문이라는 두 가지 방법으로 맵을 초기화합니다. 이로 인해 자연스럽게 이러한 접근 방식 간에 성능 차이가 있는지에 대한 의문이 제기됩니다.

성능을 비교하기 위해 벤치마크 테스트를 생성하여 다음을 수행할 수 있습니다. 두 가지 방법을 모두 사용하여 지도를 초기화하는 데 걸리는 시간을 측정합니다. 아래와 같이 제공된 벤치마크 테스트가 이를 보여줍니다.

<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

이는 평균적으로 "make"와 "{} 구문을 사용하여 맵을 초기화하는 것 사이의 성능 차이가 무시할 수 있고 본질적으로 동등한 것으로 간주될 수 있음을 나타냅니다.

위 내용은 Go에서 지도 초기화 시 \"make\"와 \"{}\" 사이에 성능 차이가 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.