Junior — Middle
Bir fonksiyona veri aktarırken: bellek kullanımı açısından hangisi daha verimlidir — dizi mi yoksa dilim mi?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go'da diziler sabit boyuta sahiptir ve bellekte tamamen saklanır, oysa dilimler (slices) bir gösterge, uzunluk ve kapasite içeren bir yapıdır.
Bellek kullanımı açısından:
- Dizi: tam olarak tüm öğeler için bellek kullanır, boyut derleme zamanında bilinir.
- Dilim (Slice): kendisi az bellek kullanır (üç kelime: gösterge, uzunluk, kapasite), ancak veri tutan bir diziye işaret eder.
Fonksiyona aktarılırken:
- Bir dizi aktarılırsa, tamamı kopyalanır, bu büyük dizilerde bellek ve zaman açısından maliyetli olabilir.
- Bir dilim aktarılırsa, sadece dilim yapısı (gösterge + uzunluk + kapasite) kopyalanır ve veriler orijinal dizide kalır, yani veri kopyası yapılmaz.
Bu nedenle, dilim aktarımı bellek kullanımı ve performans açısından daha etkilidir, özellikle büyük veri setleri için.
Örnek:
func processArray(arr [1000]int) {
// tüm dizi kopyalanır
}
func processSlice(s []int) {
// sadece dilim yapısı kopyalanır
}
func main() {
var a [1000]int
processArray(a) // maliyetli
processSlice(a[:]) // verimli
}