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