String/StringBuilder, какой том вы используете один над другим

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

  •  22-07-2019
  •  | 
  •  

Вопрос

Пятница, время рефакторинга!!!

У меня есть объект, который я использую для генерации операторов SQL.

oDb.From устанавливается один раз.Затем метаданные могут со временем добавлять соединения, пока мы все это не объединим и не вернем обратно.

Итак, вопрос: сколько раз я сохраняю синтаксис oDb.From +=, прежде чем заменить его на sbFrom.Append()?

Это № 3, 4 или 15 раз?

Или это действительно проблема с длиной контента, и если да, то какой магический #?

ТИА

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

Решение

Читать http://www.codinghorror.com/blog/archives/001218.html

А StringBuilder Класс предназначен для сценариев, в которых вы создаете огромные строки, и использование обычной конкатенации строк действительно было бы слишком медленным.

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

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

Совершенно ненаучное правило:Я бы сделал это для элементов, превышающих три — не из-за повышения производительности, а скорее (надеюсь) по хорошей привычке.

Если мне нужно добавить к строке более двух элементов, я почти всегда использую StringBuilder (я обнаружил, что если я добавляю более двух элементов, их неизбежно будет больше, поскольку люди начнут добавлять в мой код... так что StringBuilder уже доступен для их).

Я бы сказал все, что вы ожидаете иметь длину более 1-5 МБ, или что-то, что распределяет множество строк небольшими фрагментами.

В этом нет ничего ненаучного — я когда-то читал статью, в которой в .NET построитель строк действительно становится более эффективным после 5 конкатенаций.Именно здесь я обычно использую String Builder.

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

Я использую StringBuilder, когда количество конкатенаций в алгоритме превышает O(n).Если число конкатенаций равно O(1), в большинстве случаев читаемость не страдает (за исключением случаев, когда строка очень велика, что случается не очень часто).

Или когда я знаю, что есть строка, которая станет достаточно большой.(более 100 тыс. символов)

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