静态函数可以比非静态函数更快吗?

Mik*_*ike 4 c compiler-construction optimization static function

staticC 中的函数是否可能更快,因为编译器的优化器会看到所有调用点并因此优化被调用函数的结语和序言?

AnT*_*AnT 6

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


Chr*_*ung 5

如果您的函数是从定义它的同一翻译单元调用的(static显然需要哪些函数),则编译器已经可以轻松地内联此类调用,无论该函数是否已声明static

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