Rumah >pembangunan bahagian belakang >Golang >Adakah Terdapat Perbezaan Prestasi Antara \'make\' dan \'{}\' untuk Memulakan Peta dalam Go?

Adakah Terdapat Perbezaan Prestasi Antara \'make\' dan \'{}\' untuk Memulakan Peta dalam Go?

Barbara Streisand
Barbara Streisandasal
2024-11-01 01:11:02803semak imbas

 Is There a Performance Difference Between

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!

Kenyataan:
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