Home  >  Article  >  Backend Development  >  Is There a Performance Difference Between `make` and `{}` for Map Initialization in Go?

Is There a Performance Difference Between `make` and `{}` for Map Initialization in Go?

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 05:08:27689browse

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn