Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Panduan menulis fungsi cekap Golang

Panduan menulis fungsi cekap Golang

WBOY
WBOYasal
2024-04-26 18:42:02553semak imbas

Ikuti garis panduan ini untuk menulis fungsi Go yang cekap: Elakkan menggunakan pembolehubah global. Pass by value untuk jenis nilai kecil; pass by pointer untuk jenis nilai besar. Berikan nilai hanya apabila perlu. Gunakan fungsi sebaris. Kurangkan bilangan parameter.

Panduan menulis fungsi cekap Golang

Panduan Menulis Fungsi Cekap dalam Go

Fungsi yang cekap adalah kunci untuk menulis program Go yang cekap. Dengan mengikuti garis panduan ini, anda boleh menulis fungsi yang cekap dan boleh dibaca.

1. Elakkan pembolehubah global

Pembolehubah global menjadikan kod sukar untuk diselenggara dan diuji kerana ia boleh diubah suai dari mana-mana dalam program. Sebaliknya, hadkan pembolehubah kepada fungsi atau jenis tertentu.

2. Gunakan hantaran nilai

Fungsi dalam Go dihantar secara nilai secara lalai. Ini bermakna salinan pembolehubah yang dihantar ke fungsi akan dihantar ke fungsi. Ini lebih cekap untuk jenis nilai kecil seperti int, float atau rentetan. Untuk jenis nilai yang besar (seperti tatasusunan atau kepingan), hantaran penunjuk harus digunakan sebaliknya.

3. Gunakan hantaran penunjuk

Melalui nilai besar melalui penunjuk membolehkan fungsi mengubah suai nilai asal secara langsung, dengan itu mengelakkan overhed menyalin keseluruhan nilai. Apabila nilai perlu diubah suai dalam fungsi, gunakan hantaran penunjuk. . Jika fungsi memerlukan berbilang parameter, pertimbangkan untuk mencipta struktur atau menggabungkan parameter berkaitan menjadi satu nilai.

5. Elakkan peruntukan yang tidak perlu

Peruntukan nilai baharu akan menyebabkan overhed prestasi. Berikan nilai hanya apabila perlu. Sebagai contoh, gunakan penimbal dalam gelung dan bukannya memberikan nilai baharu untuk setiap lelaran.

6. Gunakan fungsi sebaris

Fungsi sebaris memasukkan badan fungsi terus ke titik panggilan. Ini boleh mengurangkan overhed panggilan fungsi, terutamanya apabila badan fungsi kecil.

Kes praktikal:

Contoh berikut membandingkan prestasi lulus dengan nilai dan lulus dengan penunjuk:

package main

import "testing"

type Data struct {
    Value int
}

func passByValue(d Data) {
    d.Value += 1
}

func passByPointer(d *Data) {
    d.Value += 1
}

func BenchmarkPassByValue(b *testing.B) {
    d := Data{Value: 0}
    for i := 0; i < b.N; i++ {
        passByValue(d)
    }
}

func BenchmarkPassByPointer(b *testing.B) {
    d := Data{Value: 0}
    for i := 0; i < b.N; i++ {
        passByPointer(&d)
    }
}

Hasil penanda aras menunjukkan bahawa lulus melalui penunjuk adalah lebih cepat daripada lulus dengan nilai:

BenchmarkPassByValue-8              10000000               148 ns/op
BenchmarkPassByPointer-8           100000000                24.2 ns/op

Atas ialah kandungan terperinci Panduan menulis fungsi cekap Golang. 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