linux环境, C语言中, 同一套库的代码编译成静态库和动态库使用, 性能上有差吗?
理论上是会有一点差别的,动态库需要加载并链接符号表,并且动态库自己独占一段内存空间,函数调用时会不利于指令缓存的命中率。
不过实际使用中绝大部分的CPU不是消耗在这里的,而且使用共享的动态库可以减少一部分磁盘I/O,所以你应该感觉不到什么差别。
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
1 回答3.3k 阅读
2 回答3.2k 阅读
1.启动时,一般动态链接拥有更好的性能。
因为,动态链接库可以不在启动时载入,或者已经被别的程序载入了,不需要再一次载入到内存。
2.运行时,一般静态链接会拥有更好的性能。
因为,动态链接库可能在运行时需要载入到内存,同时,对于编译成地址无关的动态链接库文件,
执行时会多一步地址计算,性能会稍差一些。
3.另外,如果内存不足时,因为静态链接的文件可能比动态连接不常用,更容易被swapout,那运行时性能,
动态链接也可能优于静态链接。