Logik Pengkompil untuk Fungsi Inlining dalam Go
In Go, tidak seperti C , pengkompil secara autonomi menentukan fungsi yang sesuai untuk inlining. Walaupun terdapat pilihan penyahpepijatan untuk memerhati potensi sebaris, terdapat dokumentasi terhad mengenai kriteria tepat yang digunakan oleh pengkompil Go.
Pengoptimuman Sebaris
Memandangkan keperluan untuk melaksanakan gelung pada set data berulang kali, mari kita periksa kod itu di bawah:
func Encrypt(password []byte) ([]byte, error) { return bcrypt.GenerateFromPassword(password, 13) } for id, data := range someDataSet { newPassword, _ := Encrypt([]byte("generatedSomething")) data["password"] = newPassword someSaveCall(id, data) }
Pertimbangan untuk Sebaris
Untuk berpotensi melayakkan fungsi Sulit untuk sebaris oleh pengkompil, pertimbangkan perkara berikut:
Logik Penyusun
Pengkompil Go melakukan dua hantaran untuk sebaris:
Keagresifan sebaris boleh dilaraskan menggunakan nyahpepijat 'l' bendera.
Pengesyoran
Melainkan prestasi menjadi isu, bergantung pada gelagat sebaris lalai pengkompil biasanya disyorkan. Walau bagaimanapun, jika peningkatan prestasi yang ketara diperlukan, pertimbangkan untuk menyelaraskan secara manual fungsi kecil yang sering dipanggil untuk meminimumkan overhed.
Atas ialah kandungan terperinci Bagaimanakah Pengkompil Go Memutuskan Bila Fungsi Sebaris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!