静态链接比本地代码慢

时间:2018-02-01 18:55:07

标签: c++ static-linking

我正在编写一些统计软件(C ++),其中速度是首要任务;其次是可维护性。

另外,我编写了一个静态库,它将我常用的算法集合在一起。我的许多程序都使用这个库,所以保持这些算法的独立性对我来说非常合适。新的统计软件也使用这个库。

在调试新软件时,我注释了一些来自库中的一些简单(计算方面)函数的调用。省略呼叫导致的速度增加似乎不成比例 - 提出这个问题:

问。调用静态链接代码是否会导致执行时间处罚,超出了在本地编译相同代码所导致的代码?

注意 - 这很难搜索。我的所有互联网搜索都会导致静态链接与动态链接的比较 - 这与链接无关。

编辑 - 测试是在发布版本(不是调试版)中进行的。

1 个答案:

答案 0 :(得分:4)

没有。链接静态库等效于链接组成库的目标文件。无论是从静态库链接代码还是将源复制粘贴到您随后构建为本地.o文件的文件,编译/链接时间和运行时都不应存在显着差异。

速度的任何差异都应来自代码更改(尽管如果您使用LTO(链接时间优化)可能会有一点需要注意。