Dalam bahasa Go, kaedah biasanya berfungsi lebih baik daripada fungsi kerana ia mengakses terus medan jenis penerima dan mengelakkan penyalinan data. Kaedah digunakan terutamanya untuk beroperasi pada nilai jenis penerima, manakala fungsi melaksanakan tugas bebas daripada jenis tertentu. Penanda aras menunjukkan bahawa kaedah adalah kira-kira 30% lebih cepat daripada fungsi. Oleh itu, adalah disyorkan untuk memilih kaedah apabila mempertimbangkan prestasi, tetapi fungsi masih berguna apabila fleksibiliti diperlukan atau apabila melaksanakan tugas yang tidak berkaitan dengan jenis tertentu.
Perbezaan prestasi antara kaedah dan fungsi dalam Go
Dalam bahasa Go, "kaedah" dan "fungsi" ialah kedua-dua blok kod yang digunakan untuk melaksanakan tugas tertentu, tetapi ia mempunyai beberapa perbezaan utama yang akan menjejaskan prestasi mereka.
Kaedah
fungsi
Perbezaan prestasi
Secara umumnya, kaedah adalah lebih berprestasi daripada fungsi Kelebihan. Ini kerana:
Contoh Praktikal
Pertimbangkan fungsi dan kaedah berikut, kedua-duanya mengira jumlah sekeping:
// 函数 func SumInts(s []int) int { var sum int for _, v := range s { sum += v } return sum } // 方法 type IntSlice []int func (s IntSlice) Sum() int { var sum int for _, v := range s { sum += v } return sum }
Menggunakan penanda aras, kita boleh membandingkan prestasinya:
import "testing" import "time" func BenchmarkSumInts(b *testing.B) { s := []int{1, 2, 3, 4, 5} for i := 0; i < b.N; i++ { SumInts(s) } } func BenchmarkSumMethod(b *testing.B) { s := IntSlice{1, 2, 3, 4, 5} for i := 0; i < b.N; i++ { s.Sum() } }
Menjalankan penanda aras berikut:
BenchmarkSumInts 500000000 21.8 ns/op BenchmarkSumMethod 500000000 14.9 ns/op
Seperti yang anda lihat, kaedah jauh lebih pantas daripada fungsi, kira-kira 30% lebih pantas.
Kesimpulan
Kaedah umumnya lebih baik daripada fungsi apabila mempertimbangkan prestasi. Walau bagaimanapun, fungsi masih berguna apabila anda perlu melaksanakan tugas yang tidak terikat pada jenis tertentu atau apabila anda memerlukan lebih fleksibiliti. Apabila memilih kaedah atau fungsi dalam Go, adalah penting untuk menimbang faktor ini dengan teliti.
Atas ialah kandungan terperinci Apakah perbezaan prestasi antara kaedah dan fungsi dalam golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!