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

  • Adam Washington

    Adam Washing

    12 Mayıs 2006
  • discokatze

    discokatze

    23 EYLÜL 2009
  • IGN

    IGN

    19 EYLÜL 2006