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

Linda Hamilton
Release: 2024-11-01 05:08:27
Original
688 people have browsed it

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>
Copy after login

vs.

<code class="go">myMap = make(map[string]int)</code>
Copy after login

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>
Copy after login

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
Copy after login
$ 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
Copy after login
$ 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
Copy after login

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!

source:php.cn
Statement of this Website
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
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!