вторник, 7 апреля 2015 г.

Ссылка. Кэширование объектов StringBuilder

http://sergeyteplyakov.blogspot.ru/2015/04/cache-for-stringbuilder-objects.html

Цитата:

"В текущем проекте народ очень серьезно подходит к вопросам производительности: куча структур, кастомный внешний кэш, и свой собственный object pool для хранения тяжеловесных объектов. Одним из типов объектов, которые хранятся в пуле и используются повторно являются объекты StringBuilder. И я задался вопросом, насколько это полезно.
Начиная с .NET 4.0 реализация StringBuilder-а была существенно переработана. В первых версиях реализация напоминала классический вектор – для хранения создаваемой строки использовалась изменяемый объект System.String (*), размер которой увеличивался вдвое при ее полном заполнении.
(*) Строки являются неизменяемыми лишь с точки зрения внешних кода, но с точки зрения внутреннего (internal) кода pre-.NET4.0 строки были очень даже изменяемыми.
Кэширование StringBuilder-ов с такой реализацией имело смысл. В этом случае приложение могло прийти к устойчивому состоянию своей работы, когда в памяти хранилось лишь небольшое число объектовStringBuilder с большим внутренним буфером (многопоточное обращение к пулу приведет к тому, что число объектов в пуле будет более одного). Это позволит использовать повторно внутренний буфер строки и не плодить объекты в куче больших объектов."

 (+)
Атомарные (Immutable) строки - это хорошо.
Delphi Language для мобильной разработки.

Комментариев нет:

Отправить комментарий