Предположим, что у меня есть большая система со многими объектными файлами, так что время ссылки является проблемой. Предположим также, что я знаю, что многие из классов и функций в моей системе не используются вне их единицы перевода.
- Можно ли предположить, что если я уменьшу количество символов с внешней связью, мое время ссылки будет уменьшено?
- Если да, то помещает ли сущности (например, классы и функции), которые используются только в одном TU в неназванные пространства имен, что-нибудь мне полезно? Технически объекты с внешней связью сохраняют свою внешнюю связь в неназванном пространстве имен, но, как отмечает стандарт С++ 11,
Хотя объекты в неназванном пространстве имен могут иметь внешнюю связь, они эффективно квалифицируются по имени, уникальному для их единицы перевода, и поэтому никогда не могут быть замечены из любой другой единицы перевода.
Выполняют ли алгоритмы компоновщика оптимизацию, основанную на знании того, что сущности с внешней связью в неназванных пространствах имен не видны за пределами их пространств имен?