Array İçine ( += Eklemek ) PowerShell'i RAM Zehirlenmesine Nasıl Sokar?
Bir dizi oluşturup ($Dizim = @()) sonra sunucudaki her kullanıcı adını bir döngüde bunun içine atmak ($Dizim += "Ahmet") oldukça zararsız görünür. Şirkette 500 kişi varsa milisaniye farkı sezilmez.
Lakin siz bunu SQL'den çektiğiniz 1 Milyon satırlık faturaya vurup, her dönen faturada += komutunu işletirseniz o RAM kilitlenir!
Arrays Are Fixed Size! (Diziler Genişlemez)
PowerShell'deki düz Array mimarisi genişlemez! Siz eleman ekledikçe o aslında eskiyi hafızadan yok eder ve arkada devasa bir YENİ ARRAY kurup içine yeni elemanla birlikte kopyalar. Sistem milyon kez sil/yarat yapar.
Performans dehası hareket ArrayList veya Generic List siber çağrısını omuzlamaktır;
$DevasaKutu = [System.Collections.ArrayList]::new()
# .. döngü vs
$null = $DevasaKutu.Add("Ahmet")
Bu komut (Add) diziyi yok edip yenisini kurmaz, sadece dibine bir oda inşa eder. Performans artışı %500 leri geçip dakikalar süren dökümanları 2 saniyede kusursuz işletir.