stc*_*flw 8 c# string performance assignment-operator
我有一个for循环,我做的是这个.
forloop ( loop 7000 times)
{
x += 2000_char_long_string;
}
Run Code Online (Sandbox Code Playgroud)
代码在这个forloop中持续很长时间,可能超过1分钟.我怎么解决这个问题?
谢谢.
Kob*_*obi 45
StringBuilder sb = new StringBuilder();
for(int i=0; i< 200; i++){
sb.append(longString);
}
return sb.ToString();
Run Code Online (Sandbox Code Playgroud)
当您+=
在字符串上使用时,您将继续创建新字符串,并继续定位更大和更大的内存块.这就是为什么操作这么慢.
bru*_*nde 14
使用a StringBuilder
作为@Kobi引用,您仍然可以通过初始化来提高性能.看来你可以string
提前确定最终的大小.
StringBuilder sb = new StringBuilder(7000*2000);
for(int i=0; i< 7000; i++){
sb.append(2000_char_long_string);
}
return sb.ToString();
Run Code Online (Sandbox Code Playgroud)