


Is There a Performance Difference Between `make` and `{}` for Map Initialization in Go?
Nov 01, 2024 am 05:08 AMPerformance 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!

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Go language pack import: What is the difference between underscore and without underscore?

How do I write mock objects and stubs for testing in Go?

How to implement short-term information transfer between pages in the Beego framework?

How can I define custom type constraints for generics in Go?

How can I use tracing tools to understand the execution flow of my Go applications?

How to write files in Go language conveniently?

How can I use linters and static analysis tools to improve the quality and maintainability of my Go code?

How to convert MySQL query result List into a custom structure slice in Go language?
