c - 外部函数调用与静态函数调用的性能

标签 c performance static c99 extern

调用 extern 函数与调用 static 函数之间通常存在性能差异吗?如果是这样,是什么导致了这种差异——两个调用不是通过早期绑定(bind)以相同的方式映射(即映射到特定的机器地址)吗?

最佳答案

这是一个实现细节,完全取决于编译器/链接器。在 Linux 上,调用静态链接库中的静态函数或 extern 函数本质上是相同的,而调用共享库中的函数会增加一定程度的间接性,因此速度会慢一些。

此外,编译器拥有有关静态函数的更多信息,因此可以进行更多优化,包括潜在的内联。

关于c - 外部函数调用与静态函数调用的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16903434/

相关文章:

MySQL - 选择关系数据避免左连接的最快方法

c# - C# 中的 Java 静态语句

java - 修复线程不安全 Java 代码的策略?

java - protected 静态方法访问

c - Fortran/MPI 非持久数据的非阻塞发送

c# - 确定线程性能

android - 缓存数据android应用程序的最佳方法

c++ - 是否有不关心结构/类布局的编译指示?如果不是,为什么?

c - realloc() 无效的旧大小

c - '#pragma import on' 有什么作用?