Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Что такое StringBuilder.Capacity ?


Автор: jeans1986 1.10.2007, 07:22
Что такое StringBuilder.Capacity ? Как это свойство работает? Заранее благодарю.

Автор: yar 1.10.2007, 07:46
Capacity -- это максимальное число символов, выделенных в памяти для хранения строки StringBuilder-ом. По мере надобности он динамически выделяет ещё памяти, и увеличивает Capacity. В большинстве случаев это то, что и надо. Однако можно указать StringBuilder-у выделить больше памяти, чем он это делает, например, в целях производительности, если мы реально заранее знаем, сколько нам её понадобится (памяти).

Автор: zaver 1.10.2007, 20:54
рекомендуют задавать Capacity простые числа, так он будет более эффективно работать.

Автор: archeg 1.10.2007, 22:07
Цитата(zaver @  1.10.2007,  20:54 Найти цитируемый пост)
рекомендуют задавать Capacity простые числа, так он будет более эффективно работать. 

 smile А откуда такая инфа?

Насколько помню (искал в мсдн, чет не нашел) StringBuilder по-умолчанию (когда MaxCapacity не задается) задает какое-то Capacity - больше чем слово, которое сейчас находится в StringBuilder. Это позволяет ему не расширяться при каждом добавлении символа - что довольно сильно увеличивает скорость работы. И эти числа он выбирает кажись степени двойки. Не понимаю какой смысл в ускорении при использовании простых числе smile 

Автор: tol05 1.10.2007, 22:40
zaver, попутал Capacity и HashTable.
нижеприведенная цитата http://www.developeru.info/articles/article.aspx?id=324
Цитата

Каждый раз при добавлении элемента в хеш-таблицу происходит проверка, не превосходит ли уровень заполнения заданного значения. Если данный факт имеет место, то хеш-таблица расширяется (is expanded). Расширение происходит в два этапа:

   1. Число ячеек хеш-таблицы приблизительно удваивается. Более точно, число ячеек увеличивается с текущего простого числа до следующего простого числа, хранящегося во внутренней таблице is (вспомним, что для надлежащей работы процесса повторного хеширования необходимо, чтобы размер хеш-таблицыбыл простым числом) 
    2. ...

Вам понятно, привередливый archeg?  smile  smile 

Автор: zaver 1.10.2007, 22:57
точно! каюсь

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)