我正在编写一些统计软件(C ++),其中速度是首要任务;其次是可维护性。
另外,我编写了一个静态库,它将我常用的算法集合在一起。我的许多程序都使用这个库,所以保持这些算法的独立性对我来说非常合适。新的统计软件也使用这个库。
在调试新软件时,我注释了一些来自库中的一些简单(计算方面)函数的调用。省略呼叫导致的速度增加似乎不成比例 - 提出这个问题:
问。调用静态链接代码是否会导致执行时间处罚,超出了在本地编译相同代码所导致的代码?
注意 - 这很难搜索。我的所有互联网搜索都会导致静态链接与动态链接的比较 - 这与链接无关。
编辑 - 测试是在发布版本(不是调试版)中进行的。
答案 0 :(得分:4)
没有。链接静态库等效于链接组成库的目标文件。无论是从静态库链接代码还是将源复制粘贴到您随后构建为本地.o文件的文件,编译/链接时间和运行时都不应存在显着差异。
速度的任何差异都应来自代码更改(尽管如果您使用LTO(链接时间优化)可能会有一点需要注意。