程式如果用看的永遠也學不會嘛....所以還是實際上去try一下吧.....
而且這裡只是記錄我看過的用過的東西不見得有人要看.....所以就寫到我自己看的懂就好啦.....
要測試當然要有計時的方式.....
那就是就是System.Diagnostics.Stopwatch來計時
在.cs可以直接在最上面
Using System.Diagnostics;
一般要在字串內容很大時才有很有感覺差很大......要不然應該是不會有什麼感覺。
第一個方式用+的方式:
System.Diagnostics.Stopwatch swa6 = new System.Diagnostics.Stopwatch(); //跑100萬次 int times1 = 1000000; swa6.Start(); for (int i = 0; i < times1; i++) DynamicStr1(); swa6.Stop(); Response.Write("毫秒:" + swa6.ElapsedMilliseconds.ToString() + " "); public string DynamicStr1() { string str1 = "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest" + "thisistestthisistestthisistest"; return str1; } 結果:10 毫秒
第二個方式用StringBuilder的Append方式:
System.Diagnostics.Stopwatch swa7 = new System.Diagnostics.Stopwatch(); int times2 = 1000000; swa7.Start(); for (int i = 0; i < times2; i++) DynamicStr2(); swa7.Stop(); Response.Write("毫秒:" + swa7.ElapsedMilliseconds.ToString() + " "); public string DynamicStr2() { System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); sb.Append("thisistestthisistestthisistest"); return sb.ToString(); } 結果:4034 毫秒
第三種方式用string+=的方式
System.Diagnostics.Stopwatch swa8 = new System.Diagnostics.Stopwatch(); int times3 = 1000000; swa8.Start(); for (int i = 0; i < times3; i++) DynamicStr3(); swa8.Stop(); Response.Write("毫秒:" + swa8.ElapsedMilliseconds.ToString() + " "); public string DynamicStr3() { string str1 = ""; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; str1 += "thisistestthisistestthisistest"; return str1; } 結果:11331毫秒
第一種方式因為一開始就固定長度所以是最快的方式
但是第二及第三種方式如果append或str1的數量愈多就愈有差異
如果把第二跟第三移到只有一個append及+=的字串結果就會是第三種的速度比第二種快了....另快還有一種StringFormat的比較
真的還是用AppendFormat會快於其他二種
參考:
http://msdn.microsoft.com/zh-tw/library/system.text.stringbuilder.aspx
http://www.dotblogs.com.tw/jeff-yeh/archive/2008/11/04/5870.aspx
全站熱搜
留言列表