Пул строк

Пул строк

Пул строк (англ. 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#. Мастер-класс.

Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Полезное


Смотреть что такое "Пул строк" в других словарях:

  • Количество строк кода — См. также: Объем кода Количество строк кода (англ. Source Lines of Code SLOC)  это метрика программного обеспечения, используемая для измерения его объёма с помощью подсчёта количества строк в тексте исходного кода. Как правило[1][2],… …   Википедия

  • Cocoa — Cocoa  родная объектно ориентированная среда разработки приложений для операционной системы Mac OS X производства компании Apple. Это один из пяти основных API, доступных в Mac OS X,  Cocoa, Carbon, Toolbox (для работы старых приложений …   Википедия

  • Lua — У этого термина существуют и другие значения, см. LUA. Lua Класс языка …   Википедия

  • Полтинник — Эту страницу предлагается переименовать в Пятьдесят копеек. Пояснение причин и обсуждение  на странице Википедия:К переименованию/15 сентября 2012. Возможно, её текущее название не соответствует нормам современного русского языка и/или… …   Википедия

  • Дилемма заключённого — Будут ли заключенные друг друга предавать, следуя своим эгоистическим интересам, или будут молчать, тем самым минимизируя общий срок? Дилемма заключённого (англ. Prisoner s dilemma, реже употребляется название «дилемма …   Википедия

  • Дилема заключённого — Будут ли заключенные друг друга предавать, следуя своим эгоистическим интересам, или будут молчать, тем самым минимизируя общий срок? В теории игр дилемма заключённого (реже употребляется название «дилемма бандита»)  некооперативная игра, в… …   Википедия

  • Дилема заключённых — Будут ли заключенные друг друга предавать, следуя своим эгоистическим интересам, или будут молчать, тем самым минимизируя общий срок? В теории игр дилемма заключённого (реже употребляется название «дилемма бандита»)  некооперативная игра, в… …   Википедия

  • Дилемма заключенного — Будут ли заключенные друг друга предавать, следуя своим эгоистическим интересам, или будут молчать, тем самым минимизируя общий срок? В теории игр дилемма заключённого (реже употребляется название «дилемма бандита»)  некооперативная игра, в… …   Википедия

  • Дилемма двух узников — Будут ли заключенные друг друга предавать, следуя своим эгоистическим интересам, или будут молчать, тем самым минимизируя общий срок? В теории игр дилемма заключённого (реже употребляется название «дилемма бандита»)  некооперативная игра, в… …   Википедия

  • Луа — Lua Класс языка: мультипарадигмальный: скриптовый, императивный, функциональный, объектно ориентированный (прототипный) Тип исполнения: интерпретируемый, Появился в: 1993 г. Автор(ы) …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»