首页 > 代码库 > stringbuilder的学习

stringbuilder的学习

因为之前项目中使用string发现数据变大后使用str += str1 变得越来越慢,查了下具体原理。

string是一个不可变字符,当我使用str += str1 时候,他会重新给str初始化一次,当数据变大时候  赋值时间就越来越长,测试代码:

string str = "";StringBuilder strbuilder = new StringBuilder(" ");Int64 num = Convert.ToInt64(textBox1.Text);DateTime dt = DateTime.Now;for (Int64 i = 0; i < num; i++){//str += i.ToString();//string 追加//strbuilder.Append(i);//stringbuilder追加//str = strbuilder.ToString();//str = " ";//strbuilder = new StringBuilder(" ");}DateTime dt1 = DateTime.Now;label1.T

string += i.tostring()当测试一万次加 时候需要68MS ,十万次加时候需要17147MS,百万次等待时间太长不做测试。

使用strbuilder.Append(i);十万次18MS,百万次132MS,千万次1505MS。

可以看出strbuilder.Append(i),没有因为数据过大时候累加时间。

所以在这种大数据追加修改情况下,推荐使用StringBuilder。

还有一个问题就是C#控件的text属性是string类型,赋值过去的话还是需要很长的时间,暂时没有解决这个问题

stringbuilder的学习