Home > Article > Backend Development > Is There a Performance Difference Between `make` and `{}` for Map Initialization in Go?
Performance Comparison of Map Initialization Methods in Go: make vs. {}
In Go, maps can be initialized using two primary methods:
<code class="go">var myMap map[string]int myMap = map[string]int{}</code>
vs.
<code class="go">myMap = make(map[string]int)</code>
The question arises whether there is any noticeable performance difference between these approaches.
Performance Evaluation
To assess the performance, a benchmark test was conducted using a custom testing package. The results across multiple runs indicated negligible differences between the two methods. The following is a sample benchmark 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>
Benchmark Results
The benchmark results for three separate runs were as follows:
$ 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
Conclusion
Based on these benchmark results, there is no significant performance difference between initializing maps using map[string]int{} and make(map[string]int). Both methods exhibit nearly identical performance on a sample machine.
The above is the detailed content of Is There a Performance Difference Between `make` and `{}` for Map Initialization in Go?. For more information, please follow other related articles on the PHP Chinese website!