Мне очень интересны некоторые исследования или эмпирические данные, которые показывают сравнение времени компиляции между двумя проектами на С++, которые являются одинаковыми, за исключением того, что, если это возможно, используются прямые объявления, а другие - нет.
Насколько сильно можно пересылать декларации, изменяют время компиляции по сравнению с полным?
#include "myClass.h"
против.
class myClass;
Есть ли какие-либо исследования, которые исследуют это?
Я понимаю, что это неопределенный вопрос, который сильно зависит от проекта. Я не ожидаю, что для ответа будет трудным. Скорее, я надеюсь, что кто-то сможет направить меня на исследование об этом.
В проекте, о котором я особенно беспокоюсь, содержится около 1200 файлов. Каждый cpp в среднем содержит 5 заголовков. Каждый заголовок содержит в среднем 5 заголовков. Это регрессирует примерно на 4 уровня. Казалось бы, для каждого скомпилированного cpp около 300 заголовков должны быть открыты и проанализированы несколько раз. (В дереве include есть много дубликатов.) Есть защитники, но файлы все еще открыты. Каждый cpp отдельно компилируется с помощью gcc, поэтому кэширование заголовков отсутствует.
Чтобы быть уверенным, что никто не понимает, я, безусловно, выступаю за использование передовых деклараций. Мой работодатель, однако, запретил их. Я пытаюсь возразить против этой позиции.
Спасибо за любую информацию.