建议使用哪一个:使用静态库与动态库(共享对象)

时间:2010-02-02 11:49:36

标签: linux performance shared-objects

我正在使用Linux中的应用程序。它支持静态和动态(.so)版本

从性能角度来看,用户应该使用哪个版本?该应用程序执行需要几个小时CPU时间的计算任务。

使用一个lib而不是另一个lib的任何其他优点?

由于

4 个答案:

答案 0 :(得分:4)

从纯粹的绩效角度来看:

共享对象被编译为PIC(位置无关代码),理论上可能比某些体系结构(包括x86)上的普通代码效率稍低。

但是,我认为这不会产生任何真正的不同。

从任何其他方面

使用共享对象,它比静态库有太多优势,它只是更好的选择。

答案 1 :(得分:3)

从性能角度来看,差异很小,除非经常加载和卸载动态库。

唯一的区别是动态库是在需要时加载的,而不是内置到(并因此永远存在,没有加载时间)你的可执行文件。

动态库也可以被多个可执行文件重用。这是我过去使用动态库的主要原因。

答案 2 :(得分:2)

通常,您将使用动态库来减小二进制文件的大小。除了可能无关紧要的应用程序启动之外,在运行时不会受到任何惩罚。

答案 3 :(得分:1)

通常静态绑定的库更快,因为它们没有定位和加载库的开销,但是:对于一个多小时的程序,性能差异应该太小而不能注意到。

无论如何,唯一可以确定的方法是:自己进行基准测试。