In Go, Mendedahkan Jurang Prestasi Antara Peta Dimulakan Menggunakan "make" vs "{}"
In Go, pembangun mempunyai kefleksibelan untuk memulakan peta dalam dua cara: "buat" dan "{} sintaks. Ini secara semula jadi menimbulkan persoalan sama ada terdapat sebarang perbezaan prestasi antara pendekatan ini.
Untuk membandingkan prestasi, ujian penanda aras boleh dibuat untuk mengukur masa yang diambil untuk memulakan peta menggunakan kedua-dua kaedah Ujian penanda aras yang disediakan, seperti yang ditunjukkan di bawah, menggambarkan ini:
<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>
Menjalankan penanda aras ini pada beberapa kali menghasilkan keputusan yang menunjukkan ia hampir sama dari segi prestasi:
$ 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
Ini menunjukkan bahawa, secara purata, perbezaan prestasi antara memulakan peta menggunakan sintaks "make" vs "{} adalah diabaikan dan boleh dianggap pada asasnya setara.
Atas ialah kandungan terperinci Adakah Terdapat Perbezaan Prestasi Antara \'make\' dan \'{}\' untuk Memulakan Peta dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!