Начиная с новой компании, я заметил, что для большинства наших решений они используют файлы единственного cpp, и мне было интересно, может ли кто-нибудь дать мне окончательную причину, почему и как это ускоряет сборку обработать? Я бы подумал, что редактирование одного файла cpp в файлах единства приведет к перекомпиляции всех из них.
Преимущества/недостатки единства строят?
Ответ 1
Очень похожий вопрос и хорошие ответы здесь: # включить все .cpp файлы в единый блок компиляции?
Сводка, по-видимому, заключается в том, что меньшее преимущество ввода-вывода является основным преимуществом.
См. также The Magic Of Unity Builds, как указано в вышеупомянутом вопросе.
Ответ 2
Ли Уиндер опубликовал свой опыт с Unity Builds - Злом Unity Builds
Его вывод таков:
Единство строит. Я не люблю их.
Ответ 3
Это потому, что он сохраняет избыточную работу. Резервный синтаксический анализ и компиляция для зависимостей. Связывание также намного сложнее - вы либо экспортируете все в один объект (или несколько), либо изолируете избыточный экспорт по большинству целевых файлов объектов. Меньшее количество объектов приводит к меньшему количеству операций ввода-вывода и сокращению времени соединения. В зависимости от вашей установки включение может быть проблемой - в используемой системе "единство сборки" сборка в конечном итоге связана с ЦП и/или памятью.