Стоит ли использовать StringBuilder в веб-приложениях?

StackOverflow https://stackoverflow.com/questions/470944

  •  19-08-2019
  •  | 
  •  

Вопрос

В веб-приложении я разделяю строки и присваиваю имена ссылкам или коллекциям строк.Есть ли значительный выигрыш в производительности при использовании построителя строк для веб-приложения?

РЕДАКТИРОВАТЬ:2 функции:разбиение ссылки на 5-10 строк.Затем переупаковка в другую строку.Кроме того, я добавляю по одной строке к ссылке каждый раз, когда ссылка нажимается.

Это было полезно?

Решение

Сколько строк вы будете объединять? Вы точно знаете, сколько их будет, или это зависит от того, сколько записей в базе данных и т. Д.?

См. мою статью на эту тему для получения дополнительной информации и рекомендаций - но в основном Находясь в веб-приложении, не имеет значения, насколько дорогая конкатенация строк по сравнению с использованием StringBuilder.

РЕДАКТИРОВАТЬ: я боюсь, что все еще не совсем ясно из вопроса, что именно вы делаете. Если у вас есть фиксированный набор строк для конкатенации, и вы можете сделать все это за один раз, то это быстрее и, вероятно, более читабельно сделать это с помощью конкатенации. Например:

string faster = first + " " + second + " " + third + "; " + fourth;

string slower = new StringBuilder().Append(first)
                                   .Append(" ")
                                   .Append(second)
                                   .Append(" ")
                                   .Append(third)
                                   .Append("; ")
                                   .Append(fourth)
                                   .ToString();

Другой альтернативой является использование строки формата, конечно. Это может быть самый медленный, но самый читаемый:

 string readable = string.Format("{0} {1} {2}; {3}",
                                 first, second, third, fourth);

В части вашего вопроса упоминается " добавление ссылки каждый раз " хотя для этого аспекта предлагается использовать StringBuilder - все, что естественным образом приводит к циклу, более эффективно (для средних и больших чисел) с использованием StringBuilder.

Другие советы

Вам следует взглянуть на эту замечательную статью Джона Скита о объединяющие строки.

Да, объединение обычных строк требует больших затрат (на самом деле добавление одной строки в конец другой).Каждый раз, когда строка изменяется, .net удаляет старую строку и создает новую с новыми значениями.Это неизменяемый объект.

РЕДАКТИРОВАТЬ:

Stringbuilder следует использовать с осторожностью и оценивать, как и любой другой подход.Иногда соединение двух строк вместе будет более эффективным, и его следует оценивать в каждом конкретном случае.

У Этвуда есть интересная статья по этому поводу.

Почему производительность может отличаться в веб-приложении или приложении winforms?

Использование stringbuilder является хорошей практикой, поскольку из-за выделения памяти и объектов правила применяются независимо от того, зачем вы создаете код.

Если вы создаете строку в цикле с большим количеством итераций, то рекомендуется использовать stringbuilder. В противном случае лучше всего использовать конкатенацию строк.

Во-первых, вы все еще пишете это приложение? Если да, то ОСТАНОВИТЕ Performance Tuning! Во-вторых, расставьте приоритеты над скоростью. Читаемость является более важным в долгосрочной перспективе по очевидным причинам. В-третьих, МЫ не знаем точную ситуацию и код, который вы пишете. Мы не можем посоветовать вам, важна ли эта микрооптимизация для производительности вашего кода или нет. ИЗМЕРЯЙТЕ разницу. Я очень рекомендую Ants Profiler от Red Gate.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top