是否值得将函数声明为静态?

时间:2017-10-27 13:46:57

标签: c++ static-functions

在C或C ++中,如果函数仅用于单个翻译单元(即文件),则可以将函数声明为static,例如:

static int square(int a) {
    return a * a;
}

这应该允许编译器更好地优化它。虽然它有点难看(编辑:关于丑陋的观点可能会有所不同;这个问题不是关于那个),如果我不需要,我宁愿不必这样做。 真正制造了多少差异?

  1. 是否会影响编译时间?
  2. 调用可能为static的非static函数的开销是多少?
  3. 链接器是否可以识别它仅在一个文件中使用并自动将其重新转换为static函数(可能带有-flto或ThinLTO?)。
  4. 编辑:任何架构和答案的答案编译器是受欢迎的,但显然更常见的更有帮助(Clang,x86-64)。

0 个答案:

没有答案