Apabila mengembangkan kepingan secara berulang, mudah untuk melihat sebab memperuntukkan saiz terlebih dahulu (jika diketahui) adalah lebih cekap daripada menggunakan fungsi tambahan, kerana yang terakhir akan memutuskan setiap lelaran sama ada untuk meningkatkan saiz daripada kapasiti kepingan. Tetapi saya ingin tahu sama ada menggunakan bentuk variadik tambahan adalah kurang cekap daripada menggunakan binaan buat/salin apabila menggabungkan dua kepingan besar secara tidak berulang. Contohnya (dengan andaian sl1 dan sl2 adalah jenis []int)
sl = append(sl, sl2...)
Perbandingan
nsl = make([]int, len(sl) + len(sl2)) i := copy(nsl, sl) copy(nsl[i], sl2) sl = nsl
Saya fikir bahawa bentuk pertama (lebih mudah dibaca) akan tetap berfungsi, kerana saya menjangkakan masih ada perubahan kapasiti (berdasarkan bilangan hujah untuk panggilan tambahan). Betul ke saya berfikiran begitu?
append
和 copy
Gunakan salinan asas yang sama primitif.
Jika kepingan sasaran mempunyai kapasiti yang mencukupi, append
tiada ingatan akan diperuntukkan.
append
Kod lebih mudah dibaca.
Atas ialah kandungan terperinci Adakah ia sentiasa lebih pantas untuk menggunakan salinan dan bukannya menambah pada kepingan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!