Sebaris dalam Go: Strategi dan Faktor
Go secara dinamik menentukan fungsi mana yang sesuai untuk sebaris, menawarkan kelebihan seperti prestasi yang dipertingkatkan. Walaupun mengisytiharkan sebaris secara eksplisit tidak disokong, logik pengkompil mempertimbangkan faktor tertentu untuk sebaris.
Calon Fungsi Sebaris
Untuk meningkatkan kemungkinan sebaris, kriteria berikut hendaklah diambil kira:
-
Kecil Saiz Fungsi: Fungsi dengan baris kod yang lebih sedikit berkemungkinan besar untuk diselaraskan.
-
Kekerapan Panggilan Tinggi: Fungsi yang kerap dipanggil dalam program adalah calon yang baik untuk sebaris.
-
Fungsi Tulen: Berfungsi tanpa kesan sampingan (cth., jangan mutasi data atau buat panggilan sistem) sesuai untuk sebaris.
-
Tiada Rekursi: Fungsi rekursif tidak boleh sebaris.
-
Tiada Pembolehubah Ditangkap dari Luar: Fungsi yang bergantung pada pembolehubah yang ditakrifkan dalam skop lampirannya tidak boleh sebaris.
Mempengaruhi Keputusan Pengkompil
Walaupun secara amnya tidak digalakkan untuk mengawal sebaris secara eksplisit, kebimbangan prestasi mungkin memerlukan berbuat demikian. Dalam situasi ini, meletakkan fungsi sasaran dalam fail yang sama dengan pemanggilnya boleh meningkatkan kebarangkalian sebaris.
Sumber Tambahan
- Go dokumentasi pengkompil pada sebaris : [$GOROOT/src/cmd/compile/internal/inline/inl.go](https://go.googlesource.com/go/ /master/src/cmd/compile/internal/inline/inl.go)
- Menyahpepijat bendera untuk mengawal keagresifan: -l [peringkat]
- Siaran blog Dave Cheney pada prestasi Go: [Lima perkara yang make Go fast](https://dave.cheney.net/2014/06/07/five-things-that-make-go-fast)
- Perbincangan tentang penambahbaikan inlining: [cmd/compile: improve model kos inlining #17566](https://go-review.googlesource.com/c/go/ /17566)
Atas ialah kandungan terperinci Bagaimanakah Pengkompil Go Memutuskan Bila Fungsi Sebaris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!