我正在写这样的代码,做一些快速而肮脏的计时:
var sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 1000; i++)
{
b = DoStuff(s);
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
当然,有一种方法可以将这种时序代码称为花哨的.NET 3.0 lambda,而不是(上帝禁止)将其剪切和粘贴几次并将
DoStuff(s)
替换为 DoSomethingElse(s)
吗?我知道它可以作为
Delegate
完成,但我想知道lambda方式。 最佳答案
如何扩展码表类?
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;
}
}
然后这样称呼它:
var s = new Stopwatch();
Console.WriteLine(s.Time(() => DoStuff(), 1000));
您可以添加另一个重载,该重载忽略“iterations”参数,并使用一些默认值(例如1000)调用此版本。
关于c# - 用委托(delegate)或lambda包装秒表计时?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/232848/