使用未命名的命名空间会减少链接时间吗?

Kno*_*abe 16 c++

假设我有一个包含许多目标文件的大型系统,这样链接时间就成了问题.还假设我知道我的系统中的许多类和函数都没有在翻译单元之外使用.

  1. 假设如果我减少带有外部链接的符号数量,我的链接时间会减少吗?
  2. 如果是这样,将仅在单个TU中使用的实体(例如,类和函数)放入未命名的命名空间对我有用吗?从技术上讲,具有外部链接的实体将在未命名的命名空间中保留其外部链接,但是,正如C++ 11标准所指出的那样,

虽然未命名的命名空间中的实体可能具有外部链接,但它们实际上由其翻译单元唯一的名称限定,因此永远不会从任何其他翻译单元中看到.

链接器算法是否基于以下知识执行优化:未命名的命名空间中具有外部链接的实体在其命名空间之外是不可见的?

小智 6

是的,我认为这确实减少了链接时间。我认为 Google chromium stie 上是这样的:“未命名的命名空间将这些符号限制在编译单元中,从而提高了函数调用成本并减少了入口点表的大小。” 这里是链接

我知道这是关于 chromium 项目的,但它应该适用于其他 c++ 项目。