string類與StringBuilder類性能比較
我們都知道StringBuilder的性能要比string類,是否具體測試過呢,我這里就給出這個程序供測試,一個是Timing類,用來計算時間的。另外一個類就是分別建立string,和stringbuider 類建立100,1000,10000,100000字符連接進行比較。
using System; using System.Diagnostics; namespace DataStruct7 { public class Timing { TimeSpan duration;//時間差 public Timing() { duration = new TimeSpan(0); } //開始時間 public void stopTime() { duration = Process.GetCurrentProcess().TotalProcessorTime; } //終止時間 public void startTime() { GC.Collect(); GC.WaitForPendingFinalizers(); } //返回結果 public TimeSpan Result() { return duration; } } }
另外個類
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DataStruct7 { class Program { static void Main() { int size = 100; Timing timeSB = new Timing(); Timing timeST = new Timing(); Console.WriteLine(); for (int i = 0; i <= 3; i++) { timeSB.startTime(); BuildSB(size); timeSB.stopTime(); timeST.startTime(); BuildString(size); timeST.stopTime(); Console.WriteLine("時間(單位毫秒)創建 StringBuilder " + "對象有 " + size +" 字符需要的時間: " + timeSB.Result().TotalMilliseconds); Console.WriteLine("時間(單位毫秒)創建 String " + "對象有" + size + " 字符需要的時間: " + timeST.Result().TotalMilliseconds); Console.WriteLine(); size *= 10; } } //創建StringBuilder連接 static void BuildSB(int size) { StringBuilder sbObject = new StringBuilder(); for (int i = 0; i <= size; i++) sbObject.Append("a"); } //創建string連接 static void BuildString(int size) { string stringObject = ""; for (int i = 0; i <= size; i++) stringObject += "a"; } } }
全站熱搜