Rumah >pembangunan bahagian belakang >Golang >Adakah Terdapat Perbezaan Prestasi Antara Menggunakan `{}` dan `make()` untuk Memulakan Peta dalam Go?

Adakah Terdapat Perbezaan Prestasi Antara Menggunakan `{}` dan `make()` untuk Memulakan Peta dalam Go?

DDD
DDDasal
2024-10-30 05:54:02660semak imbas

  Is There a Performance Difference Between Using `{}` and `make()` to Initialize Maps in Go?

Permulaan Peta dalam Go: make vs. {}

Dalam Go, terdapat dua kaedah biasa untuk memulakan peta: menggunakan {} atau buat(). Walaupun kedua-duanya menghasilkan peta kosong, terdapat persoalan sama ada terdapat sebarang perbezaan prestasi antara kedua-dua pendekatan.

Untuk menyiasat perkara ini, mari buat ujian penanda aras untuk membandingkan dua teknik permulaan:

<code class="go">package main

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 = map[string]int{}
    }
    result = m
}

func BenchmarkMakeMake(b *testing.B) {
    var m map[string]int
    for n := 0; n < b.N; n++ {
        m = make(map[string]int)
    }
    result = m
}

func main() {
    testing.Benchmark(BenchmarkMakeLiteral)
    testing.Benchmark(BenchmarkMakeMake)
}</code>

Menjalankan ujian penanda aras pada mesin yang berbeza menunjukkan hasil yang konsisten, menunjukkan bahawa tiada perbezaan prestasi yang ketara antara kedua-dua kaedah permulaan. Kedua-dua {} dan make() menghasilkan masa pelaksanaan yang hampir sama.

Kesimpulannya, manakala kaedah {} dan make() kedua-duanya menghasilkan peta kosong, tiada kelebihan prestasi yang boleh dilihat apabila menggunakan satu daripada yang lain . Pilihan antara kedua-duanya boleh berdasarkan keutamaan peribadi atau keperluan khusus.

Atas ialah kandungan terperinci Adakah Terdapat Perbezaan Prestasi Antara Menggunakan `{}` dan `make()` 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