BenchMark List Vs Dictionary Vs DictionaryTryGetValue

Selamlar,

Bu makalede birkaç Data Collection ile çalışıp, aralarındaki en performanslı olanı bulmaya çalışacağız.

Tuple List: Aşağıdaki örnekde List, key ve value olarak Tuple tipinde, “string” ve “int” şeklinde 2 değer almakta ve geri dönmektedir. En başta örnek amaçlı sıralı 40000 kayıt ilgili “List<string,int>”‘e atılmaktadır. Sonra 200 tane random üretilen int tipinde ID’li kayıt, ilgili liste içerisinde linq query sorgusu ile aranmakta ve cusomerIDListe’e doldurulmaktadır. İlk bakıldığında loop içerisinde linq query’nin maliyeti çok yüksektir. Bu maliyet, çoğalan kayıt sayısı ile orantılı olarak artmaktadır.

Dictionary Key-Value: Bu örnekde, “List” yerine “Dictionary” nesnesi kullanılmıştır. Bir önceki örnekde olduğu gibi, 40000 kayıtlık bulk data atılmıştır. İçerisinden rastgele 200 data çekilmiştir. İlgili kaydın olup olmadığı, öncelikle “Any()” methodu ile bakılmış ve bulunmayan kayıtlar “0” olarak, bulunan kayıtların da değeri ile birlikte, bir Liste içine eklenerek geri dönülmüştür.

Dictionary TryGetValue: Son örnekde, “Dictionary” içinde ilgili aranacak kayıt var mı sorusunun cevabı olarak “Any()” şeklinde bir Linq sorgusu yerine, Dictionary’nin “TryGetValue()” methodu kullanılmıştır. Burada, önceki örnekden farklı olarak bir var mı koşulu yoktur. Önceki örnekte, ilgili kayıt var mı ve varsa tekrardan Dictionary içinde bulunarak, geri dönülmüştür. Bu örnekde, ilgili kayıt doğrudan aranmakta ve bulunamadığı takdirde “0” değeri dönülmektedir.

Benchmark Sonuç: Aşağıda görüldüğü gibi, “ListTuple ve Dictionary” arasında Memory Allocation ve işlem zamanı açısından pek de bir fark bulunmamaktadır. Ama Dictionary’nin “TryGetValue()” methodu muzzam çalışmakda, ve tartışmasız benim tek tercihim olmaktadır. Data Structures konusu aslında yazılıma başlarken en başta araştırılıp öğrenilmesi gereken bir konudur. Örneğin Linked List, Stack, Queue, HashTables gibi daha birçok data structure nesnesi bulunmakta ve ihtiyaçlara göre hepsinin birbirine göre avantaj ve dezavantajı olmaktadır.

Geldik bir makalenin daha sonuna. Yeni bir makalede görüşmek üzere hepinize hoşçakalın.

Source Code: https://gist.github.com/borakasmer/ad24ddef72b73465f41177abc6136fac

Herkes Görsün:

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.