Rumah >pembangunan bahagian belakang >Golang >Go Slices: Tambah lwn. Salin untuk Penyalinan Dalam – Manakah Lebih Cekap?
Penyalinan Dalam Yang Cekap bagi Kepingan
Dalam Go, mencipta salinan dalam hirisan melibatkan replikasi kandungannya ke lokasi memori yang berasingan. Ini memastikan bahawa sebarang pengubahsuaian yang dibuat pada satu keping tidak menjejaskan yang lain.
Satu pendekatan kepada penyalinan dalam adalah melalui fungsi tambahan:
copy := append([]T{}, orig...)
Di sini, orig kepingan asal dilampirkan pada kepingan kosong, mencipta salinan kepingan baharu dengan tatasusunan sandarannya sendiri.
Kaedah alternatif menggunakan salinan terbina dalam fungsi:
cpy := make([]T, len(orig)) copy(cpy, orig)
Pendekatan ini menyalin terus elemen dari orig ke cpy hirisan yang baru dibuat.
Kedua-dua penyelesaian menyalin nilai dalam kepingan dengan berkesan. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa jika kepingan mengandungi penunjuk atau struct dengan medan penuding, nilai penuding ini masih akan merujuk kepada lokasi yang sama seperti dalam kepingan asal.
Menanda aras kedua-dua kaedah menghasilkan prestasi yang setanding:
BenchmarkCopy 100000 24724 ns/op BenchmarkAppend 100000 24967 ns/op
Kod pemasangan mendedahkan bahawa kedua-dua tambahan dan salinan mungkin melakukan pengisian sifar memori sebagai sebahagian daripada mereka operasi.
Akhirnya, pilihan antara kaedah tambah dan salin bergantung pada keutamaan individu dan pertimbangan prestasi. Walau bagaimanapun, kedua-dua pendekatan secara berkesan hirisan salinan mendalam, memastikan integriti data apabila bekerja dengan contoh data hirisan yang berasingan.
Atas ialah kandungan terperinci Go Slices: Tambah lwn. Salin untuk Penyalinan Dalam – Manakah Lebih Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!