静态功能更快?

时间:2010-02-12 15:27:54

标签: c optimization

C中的静态函数是否可能更快,因为编译器的优化器会查看所有调用站点,从而优化被调用函数的epilog和prolog?

3 个答案:

答案 0 :(得分:4)

如果从与定义的位置相同的翻译单元调用函数(显然需要static个函数),编译器可以很容易地内联这些调用,无论函数是否被声明static或不。

一些质量编译器还将执行整个程序优化,因此即使对不同翻译单元中的函数的调用,也可能发生内联和其他优化。

答案 1 :(得分:4)

理论上它可以。然而,与此同时,一些现代编译器可以执行所谓的“全局优化”,其基于分析跨翻译单元的代码之间的关系。这可以包括分析整个程序中给定函数的所有调用站点(而不是单个转换单元),并且可能还将这种优化扩展到非静态函数。

答案 2 :(得分:2)

它可以使编译器更愿意内联,是的。但是,一如既往,它取决于编译器。您必须测试并检查输出组件。