做一个十万次循环要17分钟之久?救命啊

xincmg 2007-02-28 12:48:02
程序功能:生成1到9999999之间数字+用户指定的字符串
int i=0;
while (i < 100000)
{
num += 10;
str += num.ToString() + "\r\n";
i++;
}//每行大约18个字符左右。num是7位以内整数
textBox1.text=str;

执行这个循环耗时18分钟,用for来写也差不多。我机器赛扬2.4g+512内存。
是不是也太慢了?求助高手们,是不是有更好的算法?
...全文
461 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xincmg 2007-02-28
  • 打赏
  • 举报
回复
那句去掉了,这段代码就没意义了,目的就是要生成个十万行的文本
hertcloud 2007-02-28
  • 打赏
  • 举报
回复
System.Text.StringBuilder sb = new System.Text.StringBuilder();
int i=0;
while (i < 100000)
{
num += 10;
sb.Append(num.ToString() + "\r\n");
i++;
}//每行大约18个字符左右。num是7位以内整数
textBox1.text=sb.ToString();
wwwxyzlnet 2007-02-28
  • 打赏
  • 举报
回复
具说string+很耗资源的
bitpolar 2007-02-28
  • 打赏
  • 举报
回复
hehe
Red_angelX 2007-02-28
  • 打赏
  • 举报
回复
str += num.ToString() + "\r\n";
把这个去掉就快了
1S不到
xincmg 2007-02-28
  • 打赏
  • 举报
回复
呃。。。改成stringbuilder就是瞬间完成了
谢谢!
Red_angelX 2007-02-28
  • 打赏
  • 举报
回复
你要明白为什么慢,不是因为循环,而是因为string的空间分配和拆箱
替代办法
1用StringBuilder
2直接写成文件
boyyao 2007-02-28
  • 打赏
  • 举报
回复
int i=0;

StringBuilder sb = new StringBuilder();
while (i < 100000)
{
num += 10;
sb.Append(num.ToString() + "\r\n")
// str += num.ToString() + "\r\n";
i++;
}//每行大约18个字符左右。num是7位以内整数
textBox1.text=sb.tostring()


这样也许会快一点把。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧