Профилирование и оптимизация компиляции - PullRequest
14 голосов
/ 10 марта 2011

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

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

Я пытался включить «Время сборки» в Visual Studio, но это не дает мне больше информации, чем синхронизация различных задач, выполняемых компилятором, зная,то, что большая часть времени тратится на «CL», не очень помогает.

Есть ли способ компилировать профиль на более низком уровне, таком как синхронизация строк или файлов?

Ответы [ 2 ]

1 голос
/ 09 августа 2013

У меня нет рекомендаций по профилированию компиляции.Однако вот пара советов по сокращению времени компиляции:

  • Максимально используйте объявление Forward в заголовочном файле

    В C ++ классы могут быть перенаправлены-declared, если вам нужно только использовать тип указателя на этот класс (так как все указатели объектов имеют одинаковый размер, и это то, о чем заботится компилятор).(источник: http://en.wikipedia.org/wiki/Forward_declaration)

  • Кроме того, использование языка Pimpl очень поможет вам, позволив компилятору перекомпилировать только измененную вами часть. http://en.wikipedia.org/wiki/Opaque_pointer

  • Избегайте универсального файла включения, который содержит все файлы включения библиотеки и содержит только те заголовки, которые вам действительно нужны.

0 голосов
/ 26 июля 2013

Вы должны попытаться разделить ваш код на отдельные файлы как можно больше. Я не использую Visual Studio, поэтому я не знаю точно, как они справляются с этим, но вот хорошее руководство, почему и как http://www.cplusplus.com/forum/articles/10627/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...