C中的静态函数是否可能更快,因为编译器的优化器会查看所有调用站点,从而优化被调用函数的epilog和prolog?
答案 0 :(得分:4)
如果从与定义的位置相同的翻译单元调用函数(显然需要static
个函数),编译器可以很容易地内联这些调用,无论函数是否被声明static
或不。
一些质量编译器还将执行整个程序优化,因此即使对不同翻译单元中的函数的调用,也可能发生内联和其他优化。
答案 1 :(得分:4)
理论上它可以。然而,与此同时,一些现代编译器可以执行所谓的“全局优化”,其基于分析跨翻译单元的代码之间的关系。这可以包括分析整个程序中给定函数的所有调用站点(而不是单个转换单元),并且可能还将这种优化扩展到非静态函数。
答案 2 :(得分:2)
它可以使编译器更愿意内联,是的。但是,一如既往,它取决于编译器。您必须测试并检查输出组件。