Hastable ve Dictionary performans benchmark

Merhaba,

Bugün Hastable collectionların Dictionary karşı bir takım testlerini yapacağız. Test case’i olarak, içersine eklediğimiz 10.000 key içersinde, bir tanesini bulacak ve bir tanesini bulamayacak şekilde aynı işlemi 20 M kere deneyerek süreleri göreceğiz.

Hastable örnek;

Hashtable hashtable = new Hashtable();
for (int i = 0; i < 10000; i++)
{
hashtable[i.ToString(“00000”)] = i;
}

Dictionary örnek;

var dictionary = new Dictionary<string, int>();
for (int i = 0; i < 10000; i++)
{
dictionary.Add(i.ToString(“00000”), i);
}

C# Dictionary hangi durumda kullanılır?

Eğer çift boyutlu list işimizi göremeyecekse, örnek verelim. Sizin pipelar ile ayrılmış bir dosyanız olsun. Buradaki alanlara ihtiyacınız var diyelim.

aaa | bbb | cccc

fdgdf|fdfsdfdsf|dsfds

Buradaki sayı milyon seviyesinde olabilir. Bu tarz durumlarda hem satır sayısına hem de o satırdaki elemları array içersine alma ihtiyacı duyacaksınız. Bu tarz durumlarda;

Dictionary<long, string[]> satirlar = new Dictionary<long, string[]>();

ve kullanırkende;

satirlar[x][0] burada x bir for olabilir. O satırın tüm elemanlarına tek for ile erişebilirsiniz.

Hint Benchmark

Hazır fırsat bulmuşken Insert işleminde 1.4 M kayıt için Benchmark yapmış oldum.

Hintsiz – > 1.06 dakika

Append -> 1 dakika

Append_values -> 0.45 dakika

Oracle cache ile hızlanıyor mu diye tekrar append çalıştırdığımda, 57 saniyeye düşüyor ama daha fazla hızlanmıyor.

Online Ide

Bugün tesadüfen bulduğum site, online olarak Java, C, C# gibi onlarca dilde yazılmış kodu derleyebiliyor. Veritabanı bağlantısı olmayan ve deneme yapmak isteyenler; ideone.com kullanabilirsiniz.

Arama
RSS
Beni yukari isinla