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

Barbara Streisand
Lepaskan: 2024-11-01 01:11:02
asal
727 orang telah melayarinya

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

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

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!

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!