C++. Сборник рецептов
Шрифт:
¹ Эта опция автоматически включается при указании – O3.
Boost.Build предоставляет похожий механизм создания окончательной сборки:
Некоторые 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 | В
|
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.
1.23. Указание варианта библиотеки времени выполнения
Ваш инструментарий поставляется с несколькими вариантами базовых библиотек времени выполнения, и вы хотите указать компилятору и компоновщику тот вариант, который должен использоваться.
Библиотеки времени выполнения, поставляемые с данным инструментарием, могут различаться по тому, являются ли они одно- или многопоточными, статическими или динамическими и содержат ли они отладочную информацию или нет.
При использовании Boost.Build эти три выбора можно сделать, использовав функции