WEB开发网
开发学院软件开发C语言 c#扩展方法奇思妙用性能篇一:扩展方法性能初测 阅读

c#扩展方法奇思妙用性能篇一:扩展方法性能初测

 2010-09-30 20:50:36 来源:WEB开发网   
核心提示:最近写了几篇《c#扩展方法奇思妙用》的文章,一直只是讨论如何扩展、如何使用的问题,c#扩展方法奇思妙用性能篇一:扩展方法性能初测,几乎没有涉及效率方面,而大家的回复好多都在问效率如何、性能怎样,一个是IsNullOrEmpty的手工实现版,称为手工方法,也引起了我对效率的关注,今天将初步测试的结果发出来

最近写了几篇《c#扩展方法奇思妙用》的文章,一直只是讨论如何扩展、如何使用的问题,几乎没有涉及效率方面。

而大家的回复好多都在问效率如何、性能怎样,也引起了我对效率的关注,今天将初步测试的结果发出来,大家一起探讨一下。

以前没太写过性能测试的代码,上网找了一下,说可以用Stopwatch进行计时,比较准确。

Stopwatch使用比较简单,几个方法从名字上就知道用用途:Reset(计时清零)、Start(开始计时)、Stop(停止计时),属性ElapsedMilliseconds就是执行操作所用的毫秒数。

为了简化测试,让更多人看明白,我们这是对IsNullOrEmpty扩展进行测试,它只是简单调用string.IsNullOrEmpty静态方法。

但为了让我们的测试更有趣一些,我们再加上两个相同功能的方法,一个是IsNullOrEmpty的手工实现版,称为手工方法,另外一个用lambda表达式写的。

一共是如下三个方法与string.IsNullOrEmpty(称为“原方法”)比较:

 1         //扩展方法
 2         public static bool IsNullOrEmpty1(this string s)
 3         {
 4             return string.IsNullOrEmpty(s);
 5         }
 6         //手工方法
 7         public static bool IsNullOrEmpty2(string s)
 8         {
 9             return s == null || s == string.Empty;
10         }
11         //lambda方法
12         public static Func<string, bool> IsNullOrEmpty3 = s => string.IsNullOrEmpty(s);

1 2 3  下一页

Tags:扩展 方法 奇思

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接