.Net çerçevesinde "Tick" olarak da bilinen, 100.000 milisaniyelik bir hassasiyetle hangi yöntemin daha hızlı olduğunu tam olarak ölçebilirsiniz.
Bu System.Diagnostic ad alanında Kronometre sınıfını kullanarak yapılır:
var sw1 = new System.Diagnostics.Stopwatch();
var sw2 = new System.Diagnostics.Stopwatch();
//Version 1
sw1.Start();
for (int num = 0; num < 100; num += 2)
{
Console.WriteLine(num);
}
sw1.Stop();
//Version 2
sw2.Start();
for (int num = 0; num < 100; num++)
{
if (num % 2 == 0)
{
Console.WriteLine(num);
}
}
sw2.Stop();
Console.Clear();
Console.WriteLine("Ticks for first method: " + sw1.ElapsedTicks);
Console.WriteLine("Ticks for second method: " + sw2.ElapsedTicks);
çıktı ilk yöntem daha hızlı olduğunu gösterecektir.
Bu neden böyle? İlk versiyonda, konsol çıktısını dikkate almazsak, sadece bir işlem yapılır (+= 2
) ve sonuçta program döngü 50 döngüsünden geçer.
İkinci sürümde, iki işlem (++
ve % 2
) ve döngüde 100 döngüye ek olarak bir karşılaştırma (num % 2 == 0
) yapılması gerekir. Tam olarak böyle bir program ölçerseniz
, o zaman birden milisaniye gibi zaman içinde büyük bir fark, sahip olacaktır. Bunun nedeni Console.WriteLine aslında çok zaman alıyor. İkinci versiyonda 50 kat daha fazla yapıldığı için, daha fazla zaman alıyor. Algoritmayı tek başına ölçmek istiyorsanız, konsol çıktısını atın.
sen benim makinede keneler farkı ortalama 43 keneler 24 kene olduğunu, bunu yaparsan.
Yani sonuç olarak, ilk yöntem hakkında 19/10000 milisaniye tarafından, daha verimlidir.
techincally sürüm 1 hızlıdır versiyon # daha 2,005 kat daha yavaş olduğunu ama gerçekten işlemcilerin hızı ile önemli değildir. – dbarnes
Hmmm Anlıyorum .. Ama her iki versiyon da sözdiziminden bağımsız olarak aynı şeyi deniyor? Ve sürüm 1 daha hızlıdır, çünkü daha küçük bir koddur? @dbarnes – bmeredit
Sözdizimi, gerçek kodun muhtemelen derleyici optimizasyonlarından dolayı yazılı olarak yazılmayacağından etkilenmez. Daha hızlı kılan şey, döngüsünüzün 100 yerine 50 adım olmasıdır. Algoritma hızının ne zaman alakalı olduğu hakkında daha fazla bilgi edinmek istiyorsanız, Big-O notasyonuna bakın. – dbarnes