WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

Пул строк (англ. string pooling) относится к двум видам оптимизации компилятора, связанным со строками:

  1. Снижение объёма кода путём объединения одинаковых строк из разных модулей.
  2. Ленивые присваивания строк с использованием счётчика ссылок (copy-on-write).

Объединение строк из разных модулей

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

Чтобы не допустить роста объёма кода, многие компиляторы (в том числе компилятор C#) хранят литеральную строку в метаданных модуля только в одном экземпляре. Все упоминания этой строки в исходном коде компилятор заменяет ссылками на её экземпляр в метаданных. Благодаря этому заметно уменьшается размер модуля. Способ не нов — в компиляторах C/C++ этот механизм существует уже давно. В компиляторе Microsoft C/C++ это называется созданием пула строк (string pooling). Это ещё одно средство, позволяющее ускорить обработку строк.

Ленивые присваивания строк

Обычно строка — это объект большого размера, требующий для своей работы выделения большого блока памяти. Данная оптимизация выделяет память под строки только при надобности, позволяя нескольким переменным указывать на одну цепочку символов. Только если одна из переменных меняет своё содержимое, строка копируется.

Подобная оптимизация существует в языках со сборкой мусора в таком виде: строка является неизменным объектом, и присваивание a=b не создаёт новой строки. Недостаток этого решения в том, что программист должен знать и использовать внутренний механизм построения строк наподобие StringBuilder (Java).

Литература

  • Рихтер Дж. CLR via C#. Программирование на платформе Microsoft .NET Framework 2.0 на языке C#. Мастер-класс.

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии