İçeriğe geç

Array vs ContiguousArray kullanımı

Merhabalar bu yazımda Swift ile Array veri yapısında performans artırma işlemini nasıl gerçekleştirebileceğinizi konuşacağız.

Swift içerisinde farklı Array sınıfları bulunmakta. Bu sınıflar Array performans işlemlerinde farklı etkilere sahip. Tabi 3,4 nesnesi bulunan dizi yapılarında çok büyük önem arz etmez ancak büyüyen ve ram üzerinde aktif yürütülen diziler içim mili saniye bazında etkiler gözlemlenebilmektedir.

ContiguousArray sınıfı durumlara göre bize mili saniye bazında normal dizi tanımlama ve kullanımlarına göre 2x bir hızlanma sağlar. Bunun nedeninden bahsedecek olursam bellek yönetimi tarafında kullanılan yapıdır. Kullanım ve yardımcı fonksiyon olarak bir farkı yoktur. ContiguousArray sınıfı bellek bloğu olarak bitişik bellek bloğu kullanır. Ancak normal Array belleği bitişik veya bitişik olamayan yapıda kayıt edebilir. Bu konuda bir garanti vermez. Ancak dezavantaj olarak Class ve Objc yapıları bu dizide kullanılamaz. Static (String,Int vs) dizi kullanımlarında azda olsa hız kazanmak için bu yapıyı kullanabilirsiniz.

Bunun yanı sıra dizilerde çok azda olsa hız ekleyebileceğiniz .reserveCapacity fonksiyonu bulunmakta. Önceden ram üzerinde yer ayırtarak derleyiciye hız kazandırmış olursunuz.

Ancak bu işlemler yanlış kullanıldığı zaman hız kazandırmak yerine hız kaybına bile sebebiyet verebilir. Bu yüzden .reserveCapacity işlemi için nesne sayısı değeri önceden belli olan Array durumlarında kullanmanız tavsiye edilir.

Bu iki işleminde içinde barındığı güzel bir örnek paylaşayım. Sequence içerisinde bulunan ve kullandığımız .map fonksiyonuda içerisinde performans kazanımı adına ContiguousArray kullanılmakta.

 

 

Tarih:Swift

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

© 2019 Kenan Atmaca