Как ускорить компиляцию с помощью предкомпилированных заголовков в С++ Builder

Цена:
10 руб.

Состав работы

material.view.file_icon
material.view.file_icon bestref-80537.rtf

Необходимые программы

Работа представляет собой zip архив с файлами (распаковать онлайн), которые открываются в программах:
  • Microsoft Word

Описание

Вместо вступления сразу приведу пример. Полная сборка (build) проекта, содержащего около 170 cpp-модулей, при использовании предкомпилированных заголовков происходит за 811 секунд, при этом число обработанных компилятором строк составляет 1,808,780. При компиляции того же проекта без использования предкомпилированных заголовков, время сборки составляет 2399 секунд, а число строк, обработанных компилятором - 45,261,820. Впечатляет, не так ли? Плата за это ускорение, в принципе не велика - предкомпилированный образ, размер которого около 40 Мб.

При компиляции исходных текстов, компилятор должен обработать все *.cpp файлы проекта и все включенные в них *.h - файлы. При этом обрабатываются как пользовательские заголовочные файлы, так и стандартные, такие как vcl.h или Word2k.h. Количество кода, находящегося в стандартных заголовках может быть очень большим, например размер файла Word2k.h превышает 5 Мб, в нем больше 130 000 строк кода.

Так как содержимое стандартных заголовков не изменяется, то их компиляция при каждой сборке проекта является напрасной тратой времени. Предкомпилированные заголовки помогают решить эту проблему - стандартные файлы компилируются один раз, а затем используется скомпилированный двоичный образ.
Принцип действия предкомпилированных заголовков

Для управления предкомпилированными предназначена директива компилятора #pragma hdrstop. Все заголовочные файлы, включенные до этой директивы, помещаются в один образ, например:

#include <vcl.h>

#include <string>

#pragma hdrstop

Такая последовательность создаст образ, содержащий скомпилированные vcl.h и string. Этот образ будет использован для другого cpp-файла, если в нем до директивы hdrstop будут включены те же файлы, в том же порядке. Обращу внимание, что важен не только состав, но и порядок следования заголовков - даже если следующий cpp-файл включает те же заголовки, но сначала указан string, а потом vcl.h, то для этого cpp-файла будет создан новый образ.

Таким образом, для повторного использования предкомпилированного заголовка необходимо выполнение двух условий:

- состав включенный файлов до директивы hdrstop должен быть тем же

- последовательность включения файлов до директивы hdrstop должна быть той же

Сократить затраты на компиляцию стандартных заголовков до минимума можно только в том случае, если скомпилировать один образ, содержащий все стандартные заголовки, необходимые для проекта. Для этого нужно, чтобы:

- ВСЕ cpp-файлы проекта имели одинаковый блок включений до директивы hdrstop

- в этот блок должны входить ВСЕ стандартные заголовочные файлы, необходимые для проекта
Теория связи. Экзамен. Билет №15. 2020 год
Теория связи. Экзамен. Билет №15 1. Функция корреляции узкополосного случайного процесса, нахождение интервала корреляции. 2. Корректирующие коды. Принцип обнаружения и исправления ошибок.
User SibGUTI2 : 19 октября 2020
100 руб.
Теория связи. Экзамен. Билет №15. 2020 год
Лабораторная работа №3 по дисциплине: Микропроцессоры и цифровая обработка сигналов. Вариант №5
Лабораторная работа №3 «Ввод информации через параллельный порт» 1. Цель работы 1.1. Изучить особенности работы параллельных портов микроконтроллера. 1.2. Изучить схемы подключения кнопок и датчиков к цифровым микросхемам. 1.3. Научиться определять состояние кнопок при помощи программы. 1.4. Изучить способы отладки программ на лабораторном стенде ЛЭСО1. 2. Задание к работе в лаборатории 2.1. Разработать программу, анализирующую состояние битов портов P1.0, P1.1, P1.2, P1.3 и зажигающую соо
User SibGOODy : 18 марта 2018
300 руб.
promo
Непряме оподаткування в Україні
ВСТУП РОЗДІЛ 1 ТЕОРЕТИЧНІ ОСНОВИ ДОСЛІДЖЕННЯ НЕПРЯМОГО ОПОДАТКУВАННЯ 1.1 Сутність непрямого оподаткування 1.2 Особливості нарахування і сплати податку на додану вартість 1.3 Акцизний збір та мито РОЗДІЛ 2 ЕКОНОМІЧНА ОЦІНКА НЕПРЯМОГО ОПОДАТКУВАННЯ В УКРАЇНІ 2.1 Роль непрямого оподаткування у формуванні доходів Зведеного та Державного бюджетів України 2.2. Динаміка та структура надходжень непрямих податків в Україні 2.3. Оцінка ефективності непрямого оподаткування в Україні РОЗДІЛ 3 ШЛ
User evelin : 25 октября 2013
5 руб.
Теплотехника КемТИПП 2014 Задача Б-1 Вариант 31
m кг воздуха с начальной температурой t1 сжимается от давления р1=0,1 МПа до давления р2. Сжатие происходит по изотерме, адиабате и политропе с показателем политропы n. Определить для каждого из трех процессов сжатия конечную температуру воздуха, работу, отведенное тепло, изменение внутренней энергии и энтропии воздуха. Изобразить процессы сжатия в p,υ и T,s — диаграммах.
User Z24 : 19 января 2026
250 руб.
Теплотехника КемТИПП 2014 Задача Б-1 Вариант 31
up Наверх