In Go, Unveiling the Performance Gap Between Maps Initialized Using "make" vs "{}"
In Go, developers have the flexibility to initialize maps in two ways: "make" and "{} syntax. This naturally raises the question of whether there are any performance differences between these approaches.
To compare the performance, a benchmark test can be created to measure the time taken to initialize a map using both methods. The provided benchmark test, as shown below, illustrates this:
<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>
Running this benchmark on multiple occasions yields results that suggest they are practically equivalent in terms of performance:
$ 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
This indicates that, on average, the performance difference between initializing maps using "make" vs "{} syntax is negligible and can be considered essentially equivalent.
The above is the detailed content of Is There a Performance Difference Between \'make\' and \'{}\' for Initializing Maps in Go?. For more information, please follow other related articles on the PHP Chinese website!