Как мне узнать, где компилятор тратит свое время?

Как мне узнать, где компилятор тратит свое время?

Моя сборка слишком медленная, я уже использую RAMdisk для временных файлов VC ++, и это не имеет никакого значения. (У меня есть SSD, поэтому я не ожидал никакой разницы.)

Большинство отдельных файлов C ++ в этом проекте занимают ок. 2 секунды на компиляцию, которая кажется ужасной (поскольку у меня также нет распараллеливания внутри проекта, потому что я использую VS2005).

Как я могу оптимизировать это? Не оптимизируйте без профилирования, но как мне профилировать компилятор?

Примечание: они не были действительно полезны:


Давайте добавим хороший комментарий: У вас есть много шаблонов? Какого размера ваши файлы в среднем? Вы включили только минимум необходимых заголовков

Нет, я не. Я мог (и, конечно, буду) конечно. Я могу найти что-то, но это все спекуляция а также методом проб и ошибок!

«Все» говорят вам, что вы должны оптимизировать только после измерения / профилирования, но при оптимизации времени компиляции мы возвращаемся к пробной версии&ошибка?


Примечание: предложенный «взломать» из комментариев с __TIME__ делает не работать, по крайней мере, не на Visual-C ++, потому что (как документы государство): самое последнее время компиляции текущего исходного файла. Время — строковый литерал в формате чч: мм: сс. — Я думаю, что по крайней мере можно было бы получить время для отдельных блоков компиляции с этим штампом, но это не помогает углубиться в блок компиляции.

12

Решение

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

2

Другие решения

Есть несколько способов оптимизировать время компиляции:

  • Используйте предварительно скомпилированный заголовок. Если вы используете Visual C ++, используйте «stdafx.h». По умолчанию «stdafx.h» установлен как предварительно скомпилированный заголовок, но я бы порекомендовал вам проверить это, чтобы убедиться, что это так.

  • Используй Linux :). Если вам не нужно использовать Windows для того, что вы делаете, я рекомендую использовать Linux. Время компиляции на нем намного лучше. Вот некоторые из причин: ext4 в среднем на ~ 40% быстрее NTFS и имеет лучший планировщик процессов. Когда дело доходит до процессорных операций, Linux обычно делает это в ~ 1,8–2 раза быстрее, а компиляция зависит от процессора.

  • Используйте другой компилятор. Известно, что Clang / LLVM имеет лучшую скорость компиляции, а также поддерживает предварительно скомпилированные заголовки.

2