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类型,赋值过去的话还是需要很长的时间,暂时没有解决这个问题

posted @ 2015-01-28 16:04  Fear丶默  阅读(184)  评论(0编辑  收藏  举报