linux环境, C语言中, 同一套库的代码编译成静态库和动态库使用, 性能上有差吗?

linux环境, C语言中, 同一套库的代码编译成静态库和动态库使用, 性能上有差吗?

阅读 6.6k
3 个回答

1.启动时,一般动态链接拥有更好的性能。
因为,动态链接库可以不在启动时载入,或者已经被别的程序载入了,不需要再一次载入到内存。

2.运行时,一般静态链接会拥有更好的性能。
因为,动态链接库可能在运行时需要载入到内存,同时,对于编译成地址无关的动态链接库文件,
执行时会多一步地址计算,性能会稍差一些。

3.另外,如果内存不足时,因为静态链接的文件可能比动态连接不常用,更容易被swapout,那运行时性能,
动态链接也可能优于静态链接。

理论上是会有一点差别的,动态库需要加载并链接符号表,并且动态库自己独占一段内存空间,函数调用时会不利于指令缓存的命中率。
不过实际使用中绝大部分的CPU不是消耗在这里的,而且使用共享的动态库可以减少一部分磁盘I/O,所以你应该感觉不到什么差别。

性能上差异不大,差异主要体现在文件大小上

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题