Shrinking the Underlying Array (Altta Yatan Diziyi Küçültme)
"Shrinking the Underlying Array" (Altta Yatan Diziyi Küçültme), bir veri yapısının (örneğin bir dizi listesi veya kuyruk) kullanmadığı belleği serbest bırakmak için kullanılan bir tekniktir. Bu yaklaşım, gereksiz bellek kullanımını en aza indirmek ve dolayısıyla daha etkili bir bellek yönetimi sağlamak için kullanılır.
Neden Gerekli?
Bir veri yapısı içindeki öğeler çıkarıldıkça, kullanılmayan bir alan oluşabilir. Bu durum, kullanmadığınız bellek alanı kapladığından, gereksiz bir yük oluşturabilir. Bu nedenle, kullanılmayan bu alanı serbest bırakmak ve gereksiz bellek kullanımını azaltmak yararlı olabilir.
Nasıl Çalışır?
Kullanılmayan alanın bir sınırın altına düştüğünü tespit ettiğinizde, altta yatan diziyi küçültebilirsiniz. Bu genellikle, dizinin boyutunu belirli bir oranda azaltmak için yeni bir dizi oluşturmayı, eski dizinin içeriğini yeni diziye kopyalamayı ve eski diziyi yeni diziyle değiştirmeyi içerir.
Örnek:
Bir dizi listesi uygulamasında, altta yatan diziyi küçültme işlemi şu şekilde yapılabilir:
class DynamicArray: def __init__(self): self.capacity = 10 self.size = 0 self.array = [None] * self.capacity def append(self, value): if self.size == self.capacity: self.resize(2 * self.capacity) self.array[self.size] = value self.size += 1 def pop(self): if self.size == 0: return "Dizi boş." removed_item = self.array[self.size - 1] self.size -= 1 if self.size < self.capacity // 4: # Kullanım oranı %25 ise self.resize(self.capacity // 2) # Kapasiteyi yarıya indir return removed_item def resize(self, new_capacity): new_array = [None] * new_capacity for i in range(self.size): new_array[i] = self.array[i] self.array = new_array self.capacity = new_capacity
Bu örnekte, pop metodu kullanılarak bir öğe çıkarıldığında, dizi boyutu kapasitenin %25'ine düştüğünde, kapasite yarıya indirilir. Bu, resize metodu aracılığıyla yapılır, ve bu sayede, gereksiz bellek kullanımı en aza indirilir. Bu tür bir yaklaşım, büyük veri yapılarında önemli miktarda bellek tasarrufu sağlayabilir.
0 Comments
Recommended Comments
There are no comments to display.