.NET中的字符串(5):字符串驻留
StringBuilder对象
通过上面的分析可以看出,String类型在做字符串的连接操作时,效率是相当低的,并且由于每做一个连接操作,都会在内存中创建一个新的对象,占用了大量的内存空间。这样就引出StringBuilder对象,StringBuilder对象在做字符串连接操作时是在原来的字符串上进行修改,改善了性能。这一点我们平时使用中也许都知道,连接操作频繁的时候,使用StringBuilder对象。但是这两者之间的差别到底有多大呢?来做一个测试:
1using System; 2using System.Text; 3 4namespace Demo5 5{ 6 /**//// <summary> 7 /// String和StringBulider比较 8 /// </summary> 9 public class Test 10 { 11 public static void Main(string[] args) 12 { 13 string a = ""; 14 StringBuilder s = new StringBuilder(); 15 16 int times = 10000; 17 int start,end; 18 19 /**////测试String所用的时间 20 start = Environment.TickCount; 21 for(int i=0;i<times;i++) 22 { 23 a += i.ToString(); 24 } 25 end = Environment.TickCount; 26 Console.WriteLine((end-start)); 27 28 /**////测试StringBuilder所用的时间 29 start = Environment.TickCount; 30 for(int i=0;i<times;i++) 31 { 32 s.Append(i.ToString()); 33 } 34 end = Environment.TickCount; 35 Console.WriteLine((end-start)); 36 37 Console.ReadLine(); 38 } 39 } 40} 41 运行结果: 884 0
通过上面的分析,可以看出用String来做字符串的连接时效率非常低,但并不是所任何情况下都要用StringBuilder,当我们连接很少的字符串时可以用String,但当做大量的或频繁的字符串连接操作时,就一定要用StringBuilder。