Ответ 1
SysInternals ProcMon покажет вам все операции ввода-вывода, выполненные выбранными процессами, включая метку времени, когда это произошло, и полный путь.
Как узнать, где компилятор проводит свое время?
Моя сборка слишком медленная, я уже использую RAMdisk для временных файлов VС++, и это не имеет никакого значения. (У меня SSD, поэтому я не ожидал разницы.)
Большинство отдельных файлов С++ в этом проекте занимают ок. 2 секунды для компиляции, которые кажутся ужасными (поскольку у меня также нет параллелизма в проекте, потому что я использую VS2005).
Как я могу это оптимизировать? Не оптимизируйте без профилирования, но как я могу профилировать компилятор?
Примечание. Это было не очень полезно:
Добавьте хороший комментарий: у вас много шаблонов? Насколько велики ваши файлы в среднем? Вы проверили, включив только минимум необходимых заголовков.
Нет, я этого не сделал. Конечно, я мог (и, конечно же, будет). Я могу найти что-то, но это все умозрение и пробная версия и ошибка!
"Все" сообщают вам, что вы должны оптимизировать только после измерения/профилирования, но при оптимизации времени компиляции мы возвращаемся к пробной и ошибке?
Примечание: предлагаемый "взломать" из комментариев с помощью __TIME__
не работает, по крайней мере, не на Visual С++, потому что (как документы): самое последнее время компиляции текущего исходного файла. Время представляет собой строковый литерал формы hh: mm: ss. - Думаю, можно было бы, по крайней мере, получить тайминги для отдельных единиц компиляции с этой маркой, но это не поможет развернуть блок компиляции.
SysInternals ProcMon покажет вам все операции ввода-вывода, выполненные выбранными процессами, включая метку времени, когда это произошло, и полный путь.
Существует несколько способов оптимизации времени компиляции:
Используйте предварительно скомпилированный заголовок. Если вы используете Visual С++, используйте "stdafx.h". По умолчанию "stdafx.h" установлен как предварительно скомпилированный заголовок, но я бы рекомендовал вам проверить это, чтобы убедиться, что оно есть.
Использовать Linux:). Если вам не нужно использовать Windows для того, что вы делаете, я рекомендую использовать Linux. Время компиляции на нем намного лучше. Некоторые из причин: ext4 на 40% быстрее, чем NTFS в среднем, и имеет лучший планировщик процессов. Когда дело доходит до процессорных операций, Linux обычно делает это ~ x1.8 - x2 раз быстрее, а компиляция зависит от процессора.
Используйте другой компилятор. Известно, что Clang/LLVM имеет лучшие скорости компиляции, а также поддерживает предварительно скомпилированные заголовки.