看了ark的文章让我想起了些这个。可能没有太多的实际意义,但确是一个不错的思路。
我们平时在使用stopwatch统计时间的时候一般会这样使用。
Stopwatch watch = Stopwatch.StartNew(); for (int i = 0; i < runs; i++) { ....... } watch.Stop();
这样就可以统计到运行的时间,但用过Python的人都知道,python自备电池。那么其实用扩展函数就可以实现这个类似功能(PS:其实功能还是相差蛮大的,但皮已经画的很像了)。
先演示如何使用(统计A.Run这个方法的使用时间)
class Program { static void Main(string[] args) { A a = new A(); Action act = a.Run; Console.WriteLine(act.Profile(100)); Console.Read(); } } public class A { public void Run() { for (int i =0; i < 100000; i++) ; } } }
用扩展方法来实现这个需求,这样就不用重复写stopwatch了
public static class FunctionHelper { public static string Profile(this Action func, int runs) { Stopwatch watch = Stopwatch.StartNew(); for (int i = 0; i < runs; i++) { func(); } watch.Stop(); float sec = watch.ElapsedMilliseconds / 1000.0f; float freq = runs / sec; return String.Format("execute runs:{0};sec:{1};freq", runs, //运行次数 sec, // 运行时间 freq // 平均运行时间 ); } }
有了这个扩展方法,你就可以对某些特定的方法自动调用性能函数了。
--=阅读快乐=--
欢迎访问我的新鱼塘 www.pumaboyd.com