Adakah Terdapat Perbezaan Prestasi Antara `make` dan `{}` untuk Permulaan Peta dalam Go?

Linda Hamilton
Lepaskan: 2024-11-01 05:08:27
asal
688 orang telah melayarinya

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

Perbandingan Prestasi Kaedah Permulaan Peta dalam Go: make vs. {}

Dalam Go, peta boleh dimulakan menggunakan dua kaedah utama:

<code class="go">var myMap map[string]int
myMap = map[string]int{}</code>
Salin selepas log masuk

vs.

<code class="go">myMap = make(map[string]int)</code>
Salin selepas log masuk

Timbul persoalan sama ada terdapat sebarang perbezaan prestasi yang ketara antara pendekatan ini.

Penilaian Prestasi

Untuk menilai prestasi, ujian penanda aras telah dijalankan menggunakan pakej ujian tersuai. Keputusan merentasi berbilang larian menunjukkan perbezaan yang boleh diabaikan antara kedua-dua kaedah. Berikut ialah contoh kod penanda aras:

<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>
Salin selepas log masuk

Keputusan Penanda Aras

Keputusan penanda aras untuk tiga larian berasingan adalah seperti berikut:

$ 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
Salin selepas log masuk
$ 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
Salin selepas log masuk
$ 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
Salin selepas log masuk

Kesimpulan

Berdasarkan hasil penanda aras ini, tiada perbezaan prestasi yang ketara antara memulakan peta menggunakan map[string]int{} dan make(map[string] int). Kedua-dua kaedah mempamerkan prestasi yang hampir sama pada mesin sampel.

Atas ialah kandungan terperinci Adakah Terdapat Perbezaan Prestasi Antara `make` dan `{}` untuk Permulaan Peta dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!