Время выполнения цикла for очень медленное
У меня есть такой код:
string str = "";
for(int i=0; i<100000; i++){
...........
str += ...;
}
return str;
но этот код очень медленный, и при его выполнении требуется 7 минут.
Как вы думаете, решение будет?
1 ответ
Преимущества StringBuilder должны быть идеально полезны с огромными строками.
В вашем примере каждый раз, когда вы объединяете строку (str += ....
) вы создаете новый строковый объект, и он становится длиннее, чем больше времени требуется для копирования из старой строки в новую строку.
Вот демонстрация того, как это работает на memory
уровень.
StringBuilder
действия разные. Это было включено именно для этого типа проблемы. Так, .NET Framework
включает в себя StringBuilder
класс, который оптимизирован для строки concatenation
,
Так StringBuilder
должен работать лучше в вашей ситуации.