Как узнать, где компилятор проводит свое время?
Моя сборка слишком медленная, я уже использую RAMdisk для временных файлов VС++, и это не имеет никакого значения. (У меня SSD, поэтому я не ожидал разницы.)
Большинство отдельных файлов С++ в этом проекте занимают ок. 2 секунды для компиляции, которые кажутся ужасными (поскольку у меня также нет параллелизма в проекте, потому что я использую VS2005).
Как я могу это оптимизировать? Не оптимизируйте без профилирования, но как я могу профилировать компилятор?
Примечание. Это было не очень полезно:
- Профилирование процесса компиляции С++
- Отображение времени сборки в Visual Studio? (Это не совсем без заслуг, хотя... если вы делаете однофайльную компиляцию, а не весь проект, он покажет время, затраченное на один файл: таким образом, я вижу, что довольно некоторые файлы здесь занимают больше 5 секунд, а некоторые даже 10 секунд при компиляции автономно)
Добавьте хороший комментарий: у вас много шаблонов? Насколько велики ваши файлы в среднем? Вы проверили, включив только минимум необходимых заголовков.
Нет, я этого не сделал. Конечно, я мог (и, конечно же, будет). Я могу найти что-то, но это все умозрение и пробная версия и ошибка!
"Все" сообщают вам, что вы должны оптимизировать только после измерения/профилирования, но при оптимизации времени компиляции мы возвращаемся к пробной и ошибке?
Примечание: предлагаемый "взломать" из комментариев с помощью __TIME__
не работает, по крайней мере, не на Visual С++, потому что (как документы): самое последнее время компиляции текущего исходного файла. Время представляет собой строковый литерал формы hh: mm: ss. - Думаю, можно было бы, по крайней мере, получить тайминги для отдельных единиц компиляции с этой маркой, но это не поможет развернуть блок компиляции.