我正在编写这样的代码,但时间却又快又脏:
var sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 1000; i++) { b = DoStuff(s); } sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds);
肯定有一个方法来调用此位的计时码作为花式schmancy .NET 3.0的λ,而不是(上帝保佑)剪切和粘贴了几次和更换 DoStuff(s) 用 DoSomethingElse(s) ?
DoStuff(s)
DoSomethingElse(s)
我知道可以这样做,Delegate但我想知道lambda方式。
Delegate
如何扩展码表类?
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)调用此版本。