Количество строк кода
- 1 year ago
- 0
- 0
Пул строк ( англ. string pooling ) относится к двум видам оптимизации компилятора , связанным со строками :
При обработке исходного кода компилятор должен каждую литеральную строку поместить в метаданные управляемого модуля. Если одна строка встречается в исходном коде много раз, размещение всех таких строк в метаданных приведет к росту результирующего файла.
Чтобы не допустить роста объёма кода, многие компиляторы (в том числе компилятор C# ) хранят литеральную строку в метаданных модуля только в одном экземпляре. Все упоминания этой строки в исходном коде компилятор заменяет ссылками на её экземпляр в метаданных. Благодаря этому заметно уменьшается размер модуля. Способ не новый — в компиляторах C / C++ этот механизм существует уже давно. В компиляторе Microsoft C/C++ это называется созданием пула строк (string pooling). Это ещё одно средство, позволяющее ускорить обработку строк.
Обычно строка — это объект большого размера, требующий для своей работы выделения большого блока памяти . Данная оптимизация выделяет память под строки только при надобности, позволяя нескольким переменным указывать на одну цепочку символов. Только если одна из переменных меняет своё содержимое, строка копируется.
Подобная оптимизация существует в языках со
сборкой мусора
в таком виде: строка является неизменным объектом, и присваивание
a=b
не создаёт новой строки. Недостаток этого решения в том, что программист должен знать и использовать внутренний механизм построения строк наподобие
StringBuilder
(
Java
).