【发布时间】:2013-06-03 18:31:19
【问题描述】:
调用extern 函数与调用static 函数之间的性能通常存在差异吗?如果是这样,是什么导致了这种差异 - 两个调用不是通过早期绑定以相同的方式映射(即映射到特定的机器地址)吗?
【问题讨论】:
-
有一点是肯定的:
static函数可能被内联,而在不同翻译单元中定义的函数则不能(至少在不常见的 LTO 的情况下不能)。此外,如果extern函数位于动态链接库中,则加载库可能会产生成本(但不确定运行时性能,它可能因系统和 ABI 而异)。 -
编译器内联静态函数要“容易”得多。内联在另一个翻译模块中定义的外部函数需要整个程序优化(基本上是链接时优化)。
标签: c performance static c99 extern