Почему C/C++ проекты очень долго компилируются?
=================================================

 Я слышал что есть способы кэшировать и не перекомпилировать весь проект целиком. Но вопрос. Почему компилятор долго работает? Ведь вся суть компилятора сводится к конкатенации всех файлов и парсингу AST-дерева, затем подмене конструкций на ассемблерные инструкции. **Если отключены оптимизации**, так невероятно долго работает подмена одного на другое? 

 Компилятор долго оптимизирует код. Смотрит, что где используется, что можно выкинуть, где можно переставить местами что-то неважное, где цикл развернуть, где еще чего. Очень много оптимизаций. Обработка каждого файла - долгое дело.  

  

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

 Можно использовать precompiled headers. Тогда компиляция будет быстрее.