Время выполнения цикла for очень медленное

У меня есть такой код:

string str = "";
for(int i=0; i<100000; i++){
    ...........
    str += ...;
}
return str;

но этот код очень медленный, и при его выполнении требуется 7 минут.

Как вы думаете, решение будет?

1 ответ

Преимущества StringBuilder должны быть идеально полезны с огромными строками.

В вашем примере каждый раз, когда вы объединяете строку (str += ....) вы создаете новый строковый объект, и он становится длиннее, чем больше времени требуется для копирования из старой строки в новую строку.

Вот демонстрация того, как это работает на memory уровень.

StringBuilder действия разные. Это было включено именно для этого типа проблемы. Так, .NET Framework включает в себя StringBuilder класс, который оптимизирован для строки concatenation,

Так StringBuilder должен работать лучше в вашей ситуации.

Другие вопросы по тегам