程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#擴展方法性能初測

c#擴展方法性能初測

編輯: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); 我們在函數名後面添加上一個數字,將它們區分開,以避免相互混淆。

為了測試公正,盡量消除測試中的誤差,我們采用一個數組存放要測試的字符串。
這個數組中存放三種字符串,非Empty非Null、Empty、Null。隨機存入,數量大致相同。生成算法如下:  1         private static string[] GetTestStringArray(int count)
 2         {
 3             string[] result = new string[count];
 4             Random random = new Random();
 5 
 6             int r = 0;
 7             for (int i = 0; i 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved