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

  • Gigawipf

    Gigawipf

    18 ŞUBAT 2010
  • SlimaksClass

    SlimaksClass

    15 Kasım 2010
  • TopDJMag TV

    TopDJMag TV

    29 Temmuz 2010