Может подтвердить проблему, и найти причину было нелегко, поэтому давайте добавим еще несколько ключевых слов, чтобы другие пользователи наткнулись на нее.
Я заметил, что перестройка моего последнего проекта MSVC занимает слишком много времени. В частности, ядра ЦП практически не используются, число процессов cl.exe в диспетчере задач сильно варьируется, а в окне «Вывод» отображаются исходные файлы, скомпилированные в виде пакетов. Где-то от одного до 16 компилируются за один раз, небольшая пауза, затем другой набор файлов и так далее. Для сравнения, в моих старых проектах процессор практически полностью используется, а в окне «Вывод» отображается непрерывный поток скомпилированных исходных файлов.
Теперь большая разница в моем новом проекте заключалась в том, чтобы лучше использовать пространства имен с соответствующей структурой каталогов, что означало, что некоторые классы имели одинаковые имена и вызывали конфликты из-за того, что разные файлы .obj были в одном и том же каталоге , что приводит к изменению имени файла объекта в C / C ++ -> Output Files.
Обновления в окне вывода также соответствуют структуре каталогов. Если есть пространство имен / каталог с одним исходным файлом внутри, тогда VS показывает только один файл, который компилируется за раз. В следующем каталоге 10 исходных файлов, а VS показывает, что все 10 компилируются одновременно.
Не так много решений. Либо избегайте классов с одинаковым именем и не изменяйте имя файла объекта, либо используйте обходной путь, опубликованный zeromus , он прекрасно работает. Мое время перестройки изменилось с 03:15 до 01:20, что довольно существенно и соответствует загрузке ЦП, которая в течение большей части компиляции увеличивается с ~ 35% до 100%.
VS 2015, 2017 и 2019 все ведут себя таким образом, так что надежд на изменение не так много.