Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Boost.Flyweight Documentation - Tutorial

Boost , , Boost.Flyweight Documentation - Index

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Boost.Flyweight Tutorial



Contents

Rationale

representation of a flyweight scenario
Fig. 1: Representation of a flyweight scenario.

Рассмотрим приложение, которое должно управлять большим количеством объектов умеренного размера, потенциально требующее больше памяти, чем разумно доступно. Когда эти объекты незаменимы, то есть они не модифицируют свое внутреннее состояние, за исключением, возможно, для повторного включения в новый набор государственных данных, и некоторые дополнительные условия выполнены, может быть введена очень удобная техника оптимизации, известная как flyweight pattern.

Допустим, что есть N различные объекты, живущие в определенное время внутри приложения, в глобальном масштабе принимая M различные значения. Если N намного больше, чем M, то есть существует множество эквивалентных объектов, мы можем устранить скрытую избыточность, заменив оригинальные объекты классами ручки, которые относятся к общему хранилищу объектов общей ценности, как показано на рисунке. Регулирующие объекты или весы, которые действуют как прокси для фактических значений, обычно занимают размер простого указателя. Чем больше классов значений, и чем больше соотношение N/M, тем значимее экономия памяти, достигнутая этим текником. Классический пример применения идиомы веса - это слово процессор: каждая буква в документе несет большое количество информации, например, ее идентификатор Unicode, шрифт, размер, эффекты настройки и т.д., но учитывая, что степень повторения букв в документе чрезвычайно высока, реализация этих букв как классов веса позволяет нам легко обрабатывать документы, варьирующиеся в сотнях тысяч символов.

Большинство презентаций модели дизайна, найденных в литературе, делают различие между весом интринской информацией (постоянные данные размещаются в репозитории) и extrinsic, мутная информация, которая хранится вместе с фугасными объектами или передается внешне. Этот анализ разделения может иметь некоторые преимущества с точки зрения дизайна приложения, но когда дело доходит до реализации, внешняя информация не влияет на общую схему веса. Так что, Пост. Flyweight предполагает, что тип, на который работает библиотека, полностью состоит из внутренней информации: это позволяет особенно привлекательно реализовать идиому в C++, в котором flyweight является непрозрачным типом, конвертируемым в const T&.

Центральный репозиторий объектов общей ценности известен как flyweight Factory. Этот компонент способен находить и возвращать ссылку на объект с заданным значением или вставлять значение, если копия ранее не хранилась. Подъем. Flyweight контролирует взаимодействие весов с их фабрикой прозрачно программисту, чтобы случайный пользователь библиотеки даже не был обеспокоен наличием такой фабрики. Подъем. Flyweight использует по умолчанию завод на основе хэшированного контейнера, который, как ожидается, будет подходящим для большинства ситуаций. Когда это не так, можно настроить завод или даже заменить его другим типом, либо предоставленным Boost. Flyweight или определяется пользователем. Другие аспекты осуществления также являются настраиваемыми и расширяемыми.

Namespace

Все общественные типы бустов. ::boost::flyweights Дополнительно, шаблон основного класса flyweight снимается в пространство имен ::boost посредством с помощью заявления. Для краткости экспозиции фрагменты кода в документации написаны так, как будто действуют следующие директивы:

using namespace ::boost;
using namespace ::boost::flyweights;

Guide to the reader

Несмотря на то, что он был убит. Flyweight имеет обширную систему настройки, контролирующую многие аспекты внутренней реализации, библиотека разработана таким образом, что большинство пользователей не должны беспокоиться или даже знать о основной сложности. Научиться использовать Boost. Flyweight как компонент внеколесного графа может быть скомпонован только чтением раздела basics и прорезыванием части на ключевые значения веса, разделом по весу тегирование и обсуждением некоторых технических вопросов. Раздел конфигурация учит, как настроить различные внутренние компоненты библиотеки. Только очень продвинутые сценарии использования потребуют внедрения подключаемых компонентов, предоставляемых пользователем: это покрыто разделом extension.




Пересмотрен 13 августа 2008 года

© Copyright 2006-2008 Joaquín M López Muñoz. Distributed under the Boost Software License, Version 1.0. (См. сопроводительный файл LICENSE_1_0.txt или копия по http://www.boost.org/LICENSE_1_0.txt

Статья Boost.Flyweight Documentation - Tutorial раздела Boost.Flyweight Documentation - Index может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Boost.Flyweight Documentation - Index ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 21:22:36/0.0068628787994385/0