Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Предкомпилированные заголовки

Описание интерфейса | Механизм подсчета ссылок в интерфейсах | Reader._AddRef | Представление интерфейса в памяти | Применение интерфейса для доступа к объекту динамически-подключаемой библиотеки | Понятие компонента | Понятие визуального программирования | Microsoft Visual Studio | Желательно встроить средства расширения в язык. | Всегда есть потеря на jmp; |



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

 

Предварительно откомпилированные заголовки – в средах программирования на языках С и С++ – способ ускорить компиляцию программ за счёт предварительной обработки так называемых заголовочных файлов, которые содержат интерфейсы модулей и, согласно нормам данных языков программирования, подключаются к программе путём прямой вставки их текстов в тело основной программы с помощью специальной директивы препроцессора #include. Предкомпилированные заголовки сохраняются на диске в виде файлов во внутреннем формате компилятора и при повторных компиляциях проекта время на их обработку и подключение существенно сокращается.

Впрочем, предварительная компиляция заголовка помогает не всегда:

1. При изменении любого из предкомпилируемых заголовков перекомпилируется весь набор.

2. При полной перекомпиляции выигрыш по времени получается, когда один и тот же набор применяется как минимум в двух единицах компиляции.

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


Принцип действия предкомпилированных заголовков


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

 

#include <vcl.h>
#include <string>
#pragma hdrstop


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


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

 

- ВСЕ cpp-файлы проекта имели одинаковый блок включений до директивы hdrstop;
- в этот блок должны входить ВСЕ стандартные заголовочные файлы, необходимые для проекта.


Дата добавления: 2015-11-16; просмотров: 96 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Component Pascal| Понятие пространства имен

mybiblioteka.su - 2015-2024 год. (0.006 сек.)