我正在使用Linux中的应用程序。它支持静态和动态(.so)版本
从性能角度来看,用户应该使用哪个版本?该应用程序执行需要几个小时CPU时间的计算任务。
使用一个lib而不是另一个lib的任何其他优点?
由于
答案 0 :(得分:4)
从纯粹的绩效角度来看:
共享对象被编译为PIC(位置无关代码),理论上可能比某些体系结构(包括x86)上的普通代码效率稍低。
但是,我认为这不会产生任何真正的不同。
从任何其他方面
使用共享对象,它比静态库有太多优势,它只是更好的选择。
答案 1 :(得分:3)
从性能角度来看,差异很小,除非经常加载和卸载动态库。
唯一的区别是动态库是在需要时加载的,而不是内置到(并因此永远存在,没有加载时间)你的可执行文件。
动态库也可以被多个可执行文件重用。这是我过去使用动态库的主要原因。
答案 2 :(得分:2)
通常,您将使用动态库来减小二进制文件的大小。除了可能无关紧要的应用程序启动之外,在运行时不会受到任何惩罚。
答案 3 :(得分:1)
通常静态绑定的库更快,因为它们没有定位和加载库的开销,但是:对于一个多小时的程序,性能差异应该太小而不能注意到。
无论如何,唯一可以确定的方法是:自己进行基准测试。