Влияют ли псевдонимы пространства имен на время сборки в больших кодовых базах? (C ++) - PullRequest
0 голосов
/ 25 октября 2011

У меня есть несколько (не так много) псевдонимов пространства имен, объявленных в заголовках. Некоторые из заголовков имеют довольно высокую видимость в большой кодовой базе. Я перестал их использовать по большей части несколько лет назад, но некоторые все еще задерживаются. Я также удалил некоторые из них по пути, но я не успел до / после. Перед тем, как пойти и удалить их, мне было интересно, проверил ли кто-нибудь это и рассчитал ли это время, и каковы были результаты этого теста. Я не против, чтобы они существовали, если только они не повредили время сборки.

Ответы [ 2 ]

2 голосов
/ 25 октября 2011

Наличие псевдонимов пространства имен вряд ли существенно повлияет на время сборки, однако включение лишних заголовков, безусловно, таково.

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

Угловой вариант будет, если у вас большой код предварительной обработки / метапрограммирования, и в этом случае выможет затронуть границы пропускной способности ЦП / памяти, и дополнительный файл не будет иметь большого значения.

Напоминаем, что лучший способ сократить время компиляции - это устранить зависимости, чтобы приращательные сборки были меньше.

1 голос
/ 25 октября 2011

Отказ от ответственности: я могу говорить только из своего ограниченного опыта работы с компилятором clang.

В clang определение псевдонима пространства имен не приведет к тому, что все символы из пространства имен источника будут скопированы в текущий контекст объявления (т.е. область действия). Вместо этого компилятор отправит в контекст запись объявления псевдонима пространства имен .

Другими словами, размер таблицы символов увеличивается только на единицу, и поэтому поиск, который не называет псевдоним, затрагивается лишь незначительно. Конечно, если вы используете псевдоним, выполняется два поиска - один, который находит объявление псевдонима, и другой, который выполняет поиск в целевом пространстве имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...