Rumah > Artikel > pembangunan bahagian belakang > Adakah Terdapat Perbezaan Prestasi Antara `make` dan `{}` untuk Permulaan Peta dalam 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>
vs.
<code class="go">myMap = make(map[string]int)</code>
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>
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
$ 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
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!