1.22. Создание окончательной сборки
1.22. Создание окончательной сборки
Проблема
Вы хотите создать небольшой быстрый исполняемый файл или динамическую библиотеку, предназначенные для распространения среди покупателей.
Решение
В основном для получения окончательной сборки требуется:
• включить оптимизации;
• включить расширение встраиваемых (inline) функций;
• отключить генерацию отладочной информации.
В табл 1.26 представлены опции компилятора и компоновщика, включающие оптимизацию и встраивание. Опций командной строки для отключения отладочной информации не существует: при сборке из командной строки отладочная информация по умолчанию отключена. Однако при использовании инструментария GCC размер исполняемых файлов и динамических библиотек можно уменьшить, указав компоновщику опцию -s.
Табл. 1.26. Опции компилятора, включающие оптимизации и встраивание
Инструментарий Оптимизация Встраивание GCC -O3 -finline-functions? Visual C++ Intel -O2 -Оb1 Metrowerks -opt full -inline auto -inline level=8 Comeau (Unix) -O3 Comeau (Windows) To же, что и у основного компилятора, но вместо тире (-) используется слеш (/) -inlining Borland -O2 -vi Digital Mars -o+time Включено по умолчанию? Эта опция автоматически включается при указании -O3.
Boost.Build предоставляет похожий механизм создания окончательной сборки: просто добавьте к требованиям цели <variant>release или используйте опцию командной строки variant=release, которую можно сократить до просто release.
Некоторые IDE также предоставляют простой способ создания окончательной сборки. Например, как я говорил в рецепте 1.21, при создании нового проекта в Visual C++ IDE автоматически генерирует отладочную и окончательную конфигурации. Чтобы запросить окончательную сборку, просто выберите в меню Build опцию Configuration Manager и в качестве активной выберите конфигурацию Release. Также можно выбрать Release в раскрывающемся списке конфигураций на стандартной панели инструментов. При следующей сборке проекта будет создана окончательная сборка.
Аналогично при создании проекта в CodeWarrior с помощью одного из шаблонов проектов Metrowerks, называемых «принадлежности» (stationery), IDE автоматически генерирует отладочную и окончательную цели. Имя окончательной цели может быть разным, но оно всегда должно включать слово «release» или «final». Чтобы запросить окончательную сборку, в меню Project выберите пункт Set Default Target (установить цель по умолчанию), а затем выберите элемент меню, соответствующий окончательной цели. Также можно выбрать окончательную цель в раскрывающемся списке целей в окне проекта.
C++Builder не поддерживает множественных конфигураций для одного проекта, но он предоставляет простой способ создания окончательной сборки. Чтобы запросить окончательную сборку, перейдите в Project Options?Compiler и нажмите на Release. Это включит все оптимизации и встраивание и отключит отладочную информацию.
При использовании IDE, которая не предоставляет готовых отладочной и окончательной конфигураций, такой как Dev-C++, или если требуется получить дополнительный контроль над параметрами проекта, обратитесь к таблицам с 1.27 до 1.29.
Табл. 1.27. Включение оптимизаций из IDE
IDE Конфигурация Visual C++ На странице свойств проекта перейдите к Configuration Properties?C/C++?Optimization и установите параметр Optimization в значение Maximize Speed (Максимизировать быстродействие), Favor Size or Speed (Отдавать предпочтение размеру или скорости) в значение Favor Fast Code (Отдавать предпочтение быстроте кода), а параметры Global Optimizations (Глобальная оптимизация). Enable Intrinsic Functions (Включить встроенные функции) и Omit Frame Pointers (Не включать указатели фрейма) в значение Yes (Да). Для остальных опций на этой странице оставьте значения по умолчанию CodeWarrior В окне Target Settings перейдите к Code Generation?Global Optimizations (Генерация кода?Глобальная оптимизация) и выберите Level 4 (Уровень 4) C++Builder В Project Options перейдите к Compiler, в разделе Code optimization (оптимизация кода) выберите Speed (Скорость) Dev-C++ См запись для GCC в табл. 1 26 и обратитесь к рецепту 1.20Табл. 1.28. Включение встраивания из IDE
IDE Конфигурация Visual C++ На страницах свойств проекта перейдите к Configuration Properties?C/C++?Optimization и установите опцию Inline Function Expansion (расширение встраиваемых функций) в значение Any Suitable (Все подходящие) CodeWarrior В окне Target Settings перейдите к Language Settings?C/C++ Language. Установите параметр Inline Depth (Глубина встраивания) в значение 8, а остальные опции встраивания оставьте неотмеченными C++Builder В Project Options перейдите к Compiler и в разделе Debugging снимите флажок Disable inline expansions (Отключить встраивание функций) Dev-C++ См. запись для GCC в табл. 1.26 и обратитесь к рецепту 1.20Табл. 1.29. Отключение отладочной информации в IDE
IDE Конфигурация Visual C++ На страницах свойств проекта перейдите к Configuration Properties?С/С++?General и для опции Debug Information Formal (Формат отладочной информации) выберите значение Disabled Metrowerks В окне Target Settings перейдите к Language Settings?Linker?х86 Linker и снимите флажки Store full paths (Сохранять полные пути). Link debug info (Компоновать с отладочной информацией), и Debug inline functions (Отлаживать встраиваемые функции) C++Builder В Project Options перейдите к Compiler и снимите флажки Debug Information и Line Number Information (информация о номерах строк) Dev-C++ Убедитесь, что. как описано в рецепте 1.20 не указана опция командной строки -gОбсуждение
Большинство наборов инструментов предлагает несколько опций оптимизации, а некоторые даже десятки. Какие оптимизации следует выбрать, зависит от требований к проекту. Например, во встраиваемых системах может потребоваться выбрать оптимизации, которые ценой некоторого уменьшения скорости приводят к созданию меньших по размеру исполняемых файлов. В других случаях приоритет может отдаваться скорости. Некоторые оптимизации сделают программу быстрее на одной платформе, но медленнее на другой. Вы можете даже столкнуться с тем, что некоторые опции сделают отдельные части программы быстрее, а другие части — медленнее.
Таблицы 1.26 и 1.27 показывают опции обобщенных оптимизаций, но для достижения наилучших результатов следует тщательно рассмотреть все требования, изучить документацию по инструментарию и провести всестороннее тестирование.
Эта ситуация аналогична встраиванию, хотя обычно инструментарии предоставляют значительно меньше опций для встраивания, чем для других оптимизаций
Смотри также
Рецепт 1.21.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
4. Пакеты (сборки) системы Tor
4. Пакеты (сборки) системы Tor Программное обеспечение Tor разрабатывается для различных операционных систем: - ОС семейства Microsoft Windows - ОС семейства Linux/Unix- ОС Apple- и для смартфонов (ОС Android, iPhone, iPad и др.)Для каждой из операционных систем существуют различные варианты
6.14.5 Тайм-аут сборки датаграммы
6.14.5 Тайм-аут сборки датаграммы Рассмотрим следующую последовательность событий:? Пересылается датаграмма.? Пославший ее процесс аварийно завершается.? Датаграмма фрагментируется при пересылке.? По пути следования теряется один из фрагментов.При потере отправленного
Придание макету окончательной формы
Придание макету окончательной формы Обязательно оцените композиционное решение сайта, поменяв все цвета на оттенки серого. Если сайт хорошо выглядит в черно-белом исполнении, то в цвете он будет смотреться еще лучше. Если же дизайн никуда не годится, то и цветовое
Активизация сборки мусора
Активизация сборки мусора Итак, сборщик мусора в .NET призван управлять памятью за вас. Однако в очень редких случаях, перечисленных ниже, бывает выгодно программно активизировать начало сборки мусора, используя дня этого GC.Collect().• Перед входом приложения в блок
Проведение окончательной конфигурации и утверждение
Проведение окончательной конфигурации и утверждение Как уже упоминалось в разделе «Базовая конфигурация и подтверждение», не все включенные в рамки базовой конфигурации сценарии и бизнес-процессы отлаживаются на этом этапе.Чтобы облегчить задачу проведения
Управление проектом на стадии окончательной подготовки
Управление проектом на стадии окончательной подготовки Цель управления проектом на этом этапе мало отличается от остальных этапов и состоит в том, чтобы обеспечивать проекту направленное и поступательное движение, координировать усилия по выполнению расписания
Проверка качества на этапе окончательной подготовки
Проверка качества на этапе окончательной подготовки Проверка качества — это завершение стадии окончательной подготовки. Для этого компания SAP рекомендует следующий список контрольных вопросов:1. Убедитесь, что были проведены собрания организационного комитета и
Официальное закрытие этапа окончательной подготовки
Официальное закрытие этапа окончательной подготовки Эта задача подразумевает получение официального одобрения результатов этого этапа проекта и переход к следующему этапу. Это также означает окончание четвертой фазы по методологии
Краткая схема сборки
Краткая схема сборки В принципе, вы можете собирать компьютер в той последовательности, в какой пожелаете. Мало того, в зависимости от размеров и конфигурации корпуса, а также размера материнской платы очередность операций может варьироваться. Иногда проще сначала
Механизм сборки мусора
Механизм сборки мусора Сборщик мусора (garbage collector) - это функция исполнительной системы (runtime system) языка программирования. Сборщик мусора выполняет обнаружение и утилизацию недостижимых объектов, не нуждаясь в управлении приложением, хотя приложение может иметь в своем
Основа сборки мусора
Основа сборки мусора Рассмотрим работу сборщика мусора.Основной алгоритм включает две фазы: пометка и чистка. Фаза пометки, начиная с оригиналов, рекурсивно следует ссылкам, проходит активную часть структуры и помечает как достижимые все встреченные объекты. Фаза
Алгоритмы параллельной сборки мусора
Алгоритмы параллельной сборки мусора Для получения полного решения проблемы работы в стартстопном режиме крайне привлекательно выделить сборщику мусора отдельный поток выполнения, конечно, при условии поддержки многозадачности операционной системой. Этот прием
Механизм сборки мусора
Механизм сборки мусора Приведем схему алгоритма, используемого сборщиком мусора.Решение представляет собой не единственный алгоритм, а основано на комбинации основных алгоритмов, часть из которых используется совместно, часть - независимо друг от друга. Каждая