Книга: Основы объектно-ориентированного программирования
Стоимость универсализации
Стоимость универсализации
Как всегда нужно убедиться, что ОО-техника, введенная в интересах повторного использования, расширяемости и надежности, не влечет потерю производительности. Этот вопрос уже поднимался при рассмотрении массивов. Теперь необходимо с этих позиций проэкзаменовать механизм универсализации в целом. Какова цена универсализация?
В частности, этот вопрос возникает из-за опыта С++, где универсализация, известная как механизм шаблонов, представляла одно из поздних добавлений к языку. Выяснилось, что некоторые компиляторы воспринимают введение универсализации буквально, генерируя различные копии методов класса для каждого фактического родового аргумента! В результате в литературе по С++ предупреждают программистов об опасности широкого использования шаблонов:
Число создаваемых экземпляров шаблона - уже проблема для некоторых пользователей С++. Если пользователь создает List<int>, List<String>, List<Widget> и List<Blidget> (где Widget и Blidget классы, определенные пользователем) и вызывает head, tail и insert для всех четырех объектов, то каждая из этих функций будет создана в четырех экземплярах (из-за родового порождения). Вместо этого широко применимый класс List мог бы создать единственный экземпляр каждой функции применимый для различных типов.10.5) |
Авторы этого предупреждения (С++ эксперты из AT&T, один из них соавтор официальной С++ документации [Ellis 1990]) продолжают предлагать различные способы, позволяющие избежать порождения шаблонов. Но универсализация не предполагает дублирование кода. При хорошо спроектированном языке и хорошем компиляторе можно генерировать единый код компонентов родового класса, так что последующие добавления потребуют минимальных затрат:
[x]. времени компиляции;
[x]. размера сгенерированного кода;
[x]. времени выполнения;
[x]. памяти, требуемой для выполнения.
Работая в такой среде, можно использовать всю мощь универсализации, не опасаясь потери производительности, как на этапе компиляции, так и выполнения.
- Стоимость размещения рекламы
- Когда и как применять шаблон «Фиксированная стоимость»
- Стоимость рейтинга
- Как рассчитать стоимость вашей работы при обзвоне клиентов
- Стоимость программного обеспечения
- Сэндвич стоимостью 34 миллиона долларов и динозавр: успехи и полезные неудачи
- Как правильно назвать стоимость
- Стоимость рубричной рекламы
- Как мы планируем релизы и составляем контракты с фиксированной стоимостью
- Стоимость владения интернет-магазином
- У SEO оптимизации небольшая себестоимость относительно других видов рекламы
- 3.3. Технология создания позитивного бренда, увеличивающего стоимость организации 96