Стоимость универсализации
Стоимость универсализации
Как всегда нужно убедиться, что ОО-техника, введенная в интересах повторного использования, расширяемости и надежности, не влечет потерю производительности. Этот вопрос уже поднимался при рассмотрении массивов. Теперь необходимо с этих позиций проэкзаменовать механизм универсализации в целом. Какова цена универсализация?
В частности, этот вопрос возникает из-за опыта С++, где универсализация, известная как механизм шаблонов, представляла одно из поздних добавлений к языку. Выяснилось, что некоторые компиляторы воспринимают введение универсализации буквально, генерируя различные копии методов класса для каждого фактического родового аргумента! В результате в литературе по С++ предупреждают программистов об опасности широкого использования шаблонов:
Число создаваемых экземпляров шаблона - уже проблема для некоторых пользователей С++. Если пользователь создает List<int>, List<String>, List<Widget> и List<Blidget> (где Widget и Blidget классы, определенные пользователем) и вызывает head, tail и insert для всех четырех объектов, то каждая из этих функций будет создана в четырех экземплярах (из-за родового порождения). Вместо этого широко применимый класс List мог бы создать единственный экземпляр каждой функции применимый для различных типов.10.5)Авторы этого предупреждения (С++ эксперты из AT&T, один из них соавтор официальной С++ документации [Ellis 1990]) продолжают предлагать различные способы, позволяющие избежать порождения шаблонов. Но универсализация не предполагает дублирование кода. При хорошо спроектированном языке и хорошем компиляторе можно генерировать единый код компонентов родового класса, так что последующие добавления потребуют минимальных затрат:
[x]. времени компиляции;
[x]. размера сгенерированного кода;
[x]. времени выполнения;
[x]. памяти, требуемой для выполнения.
Работая в такой среде, можно использовать всю мощь универсализации, не опасаясь потери производительности, как на этапе компиляции, так и выполнения.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
3.3. Жизненный цикл экземпляра программы и «общая стоимость владения» им
3.3. Жизненный цикл экземпляра программы и «общая стоимость владения» им Жизненный цикл отдельного экземпляра программы, находящегося в эксплуатации, вообще говоря, не совпадает с жизненным циклом самой программы как произведения5.В простейшем, вырожденном случае
8. Стоимость продукта
8. Стоимость продукта Следующая часть текста или видео – стоимость продукта. Вы говорите: «Сколько бы вы заплатили, чтобы получить такие результаты? На мой взгляд, этот курс стоит 100 000 рублей. Но вы можете получить его всего за 3500 рублей – если сделаете заказ прямо
Стоимость доставки не изменится
Стоимость доставки не изменится Помимо всего прочего вы можете использовать еще одну хитрость. Когда покупатель уже сформировал заказ, предложите ему что-то еще, от чего стоимость доставки не изменится. Ведь если в коробке осталось неиспользованное пространство, почему
Снизьте стоимость перемен
Снизьте стоимость перемен Будьте гибкими, снижая препятствия для переменПеремены — ваш лучший друг. Чем выше их цена, тем меньше их вероятность. И если ваши конкуренты могут меняться быстрее вас, вы в крайне невыгодном положении. Если цена перемен становится слишком
Стоимость мобильного доступа
Стоимость мобильного доступа Мобильный доступ в Интернет – одна из услуг, которую абоненты оплачивают отдельно. Все федеральные операторы сотовой связи России реализовали в своих сетях GPRS-надстройку.Напомним, что операторы представляют две разновидности GPRS-доступа.
Прощай, модем! В регионах резко подпрыгнула стоимость dialup-доступа
Прощай, модем! В регионах резко подпрыгнула стоимость dialup-доступа Автор: Дмитрий ЛяховМинувшее лето принесло немало новостей, касающихся изменения оплаты услуг связи. Как известно, с 1 июля 2006 года вступил в силу Федеральный Закон "О внесении изменения в ст. 56 Закона «О
Стоимость и время развертывания
Стоимость и время развертывания Оценивание затрат на развертывание PKI зависит от нескольких главных факторов:* количества пользователей;* количества приложений;* варианта развертывания PKI ( инсорсинг или аутсорсинг ).Расходы на амортизацию PKI не должны превышать более
Стоимость имени в Нью-Джерси
Стоимость имени в Нью-Джерси Возможно, Кэтлит прав. Конечно, Ассоциация прямого маркетинга устроила аналогичную общественную кампанию с высокими ставками в 1996 году, когда сенатор от Нью-Джерси Ричард Коди [Richard 3. Cody] пытался провести билль, сделавший бы незаконной продажу
Глава 5 Стоимость внесения изменений
Глава 5 Стоимость внесения изменений При определенных условиях экспоненциально растущую относительно времени стоимость внесения изменений в систему можно сгладить. Если кривая роста стоимости внесения изменений в систему сглаживается, старые правила, определяющие