C# – List Koleksiyonunda Performans ve Bellek Analizi (Benchmark)
Uzunca aradan sonra yeni bir benchmark postuna hoşgeldiniz. Uzatmadan konuya giriyorum.Öncelikle Listenin yapısından bahsedelim.
C# – List Koleksiyonunda Performans ve Bellek Analizi (Benchmark)
List Sınıfı ve Özellikleri Nedir?
System.Collections.Generic namespace’i içerisinde bulunur. Buradan da anlaşılacağı üzere generic bir koleksiyondur. Kök atası olarak da IEnumerable interface’ini alır.
Bu kısa bilgilerden sonra benchmark’ımıza başlayalım. Öncelikle Projemizi oluşturuyoruz.
Sırasıyla aşağıdaki CLI commandları çalıştırılır.dotnet new console -n ListBenchmark
cd ListBenchmark\
dotnet add package BenchmarkDotNet
dotnet restore
Yukarıda “ListBenchmark” adında bir console app oluşturup benchmark için kullanacağımız kütüphaneyi indirdik.
Sonrasında bu class ı oluşturuyoruz.
[MemoryDiagnoser]
public class CollectionRun
{
[Benchmark]
public void List()
{
var list = new List<string>();
for (int i = 0; i < 1000; i++)
{
list.Add("Mr.KOÇ Benchmark");
}
}
[Benchmark]
public void ListWithCapacity()
{
var list = new List<string>(1000);
for (int i = 0; i < 1000; i++)
{
list.Add("Mr.KOÇ Benchmark");
}
}
}
ve son olarak bu kodu da main methodumuza yazıyoruz.
BenchmarkRunner.Run<CollectionRun>();
Uygulamamızı çalıştırıyoruz.dotnet run -c Release
SONUÇ
.Net Core 3.1 Framework üzerinde çalıştırıldı.
2 Listemize de 1000’er item ekledik.
Kapasitesini önceden deklare ettiğimiz listemizin(ListWithCapacity) diğer listemize göre;
Ortalama %20 daha performanslı olduğunu ve sistem belleğini %50 daha az kullandığını gözlemledik.
Özellikle fazlaca yük altında çalışan projelerde koleksiyonların kapasitelerinin önceden deklare edilmesi sistem kullanımınızı düşürmeye yardımcı olacak etmenlerden sadece biridir.
Bir sonraki bencmark’da görüşmek üzere.
Diğer Performans Analizleri‘ne buradan bakabilirsiniz.
İlk Yorumu Siz Yapın