2010-06-01 2 views
1

Я прочитал некоторые вопросы о прекомпилированных заголовках, но не смог найти прямой ответ на этот вопрос.Помогают ли предварительно скомпилированные заголовки с перестройками?

Обычно я перестраиваю все свое решение Visual Studio 2010.

Одним из проектов в моем решении является проект C++/CLI.

Я думал, что использование предварительно скомпилированных заголовков в этом проекте увеличит скорость компиляции.

После некоторых экспериментов кажется, что использование предварительно скомпилированных заголовков только замедляет процесс восстановления.

Предоставлены ли предварительно скомпилированные заголовки только с сборками, которые не полностью очищают старые файлы?

EDIT:

Например, предположим, что мой StdAfx.h имеет только 1 строку:

#include <string> 
+1

Пожалуйста, не заставляйте нас угадывать содержание вашего файла stdafx.h. –

+0

Я обновил вопрос. На самом деле мой вопрос носит общий характер. Когда я делаю пересоединение, могут ли прекомпилированные заголовки ускорить компиляцию или всегда перестраивают предварительно скомпилированные заголовки, чтобы они могли только замедляться? – brickner

ответ

4

Это зависит!

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

Если у вас много исходных файлов, в которых используется много одинаковых заголовков в вашем предварительно скомпилированном заголовке, вы должны увидеть преимущество. В противном случае вы не увидите почти никакого ускорения или, что еще хуже, замедления из-за накладных расходов, связанных с монолитным набором заголовков и переполненным глобальным пространством имен.

+1

Я никогда не видел замедление. Но я думаю, что это может быть в некоторых конкретных ситуациях. –