SORU
24 EKİM 2008, Cuma


Sarma temsilci veya lambda ile zamanlama Kronometre?

Bu kodu, hızlı ve kirli bir zamanlama yaparak yazıyorum:

var sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 1000; i  )
{
    b = DoStuff(s);
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);

Mutlaka bir şekilde zamanlama bu biraz fiyakalı bir kod çağırma yok .NET 3.0 lambda yerine (Allah korusun) kesme ve birkaç kez yapıştırma ve değiştirmeDoStuff(s)ileDoSomethingElse(s)?

Delegate olarak yapılabilir biliyorum ama lambda yolu hakkında merak ediyorum.

CEVAP
24 EKİM 2008, Cuma


Hakkında uzanan Kronometre sınıf?

public static class StopwatchExtensions
{
    public static long Time(this Stopwatch sw, Action action, int iterations)
    {
        sw.Reset();
        sw.Start(); 
        for (int i = 0; i < iterations; i  )
        {
            action();
        }
        sw.Stop();

        return sw.ElapsedMilliseconds;
    }
}

O zaman şöyle diyoruz:

var s = new Stopwatch();
Console.WriteLine(s.Time(() => DoStuff(), 1000));

"Yineleme" ve bazı varsayılan değer (1000 gibi) ile bu sürüm çağırır parametre. bu atlar bir başka aşırı ekleyebilirsiniz

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chilla Frilla™

    Chilla Frill

    7 Aralık 2006
  • jagadambarecords

    jagadambarec

    13 AĞUSTOS 2008
  • Shanice Caruthers

    Shanice Caru

    27 EKİM 2011