Lulus Parameter lwn Pengoptimuman Pembolehubah Global
Pertimbangkan kebimbangan untuk mengoptimumkan prestasi fungsi dengan menjadikan parameter yang jarang dikemas kini secara global untuk mengelakkan hantaran berulang. Secara khususnya, kami mengkaji implikasi prestasi dalam konteks fungsi checkFiles yang mengambil sekeping corak yang dikecualikan sebagai hujah.
Gelagat Salin-dalam-Tulis Go
Bertentangan dengan kepercayaan bahawa Go menggunakan copy-on-write, parameter sentiasa diluluskan mengikut nilai, menghasilkan salinan nilai yang diluluskan. Untuk hirisan, ini bermakna salinan deskriptor hirisan dibuat, manakala tatasusunan asas kekal dikongsi.
Kecekapan Hantaran Slice
Slices dalam Go ialah rujukan padat kepada tatasusunan sokongan mereka. Mengikut reka bentuk, hantaran kepingan adalah cekap kerana hanya deskriptor, bukan keseluruhan tatasusunan asas, perlu disalin. Oleh itu, menghantar kepingan sebagai parameter tidak memerlukan overhed yang ketara, menjadikan pengoptimuman pembolehubah global tidak diperlukan.
Penanda Aras Prestasi
Penanda aras pendekatan alternatif tidak menunjukkan perbezaan prestasi yang ketara. Kod penanda aras sampel menunjukkan bahawa kedua-dua hirisan lulus sebagai parameter dan mengakses hirisan global dilaksanakan dengan kecekapan yang setanding.
Pertimbangan untuk Kecekapan
Walaupun kecekapan hantaran hirisan secara amnya optimum, pertimbangkan yang berikut:
Kesimpulan
Dalam kebanyakan senario, tiada faedah prestasi untuk menjadikan parameter global dan bukannya melepasinya sebagai parameter. Pengendalian hirisan Go yang cekap menghilangkan keperluan untuk pengoptimuman sedemikian, dan lulus parameter selalunya membolehkan pengoptimuman pengkompil selanjutnya.
Atas ialah kandungan terperinci Adakah Pengoptimuman Pembolehubah Global untuk Parameter Slice yang Jarang Dikemas Kini Berbaloi dengan Usaha?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!