我正在使用Linux上的一个应用程序。它支持静态和动态(.so)版本。
从性能角度来看,用户应该使用哪个版本?该应用程序执行需要数小时的CPU时间的计算任务。
使用一种库而不是另一种库还有其他优点吗?
谢谢
从性能角度来看,用户应该使用哪个版本?该应用程序执行需要数小时的CPU时间的计算任务。
使用一种库而不是另一种库还有其他优点吗?
谢谢
从性能角度来看:
共享对象编译为PIC(位置无关代码),在某些体系结构(包括x86)上理论上可能比普通代码略微效率低下。
但是,我认为这不会造成任何真正的差异。
从其他任何角度来看
使用共享对象,它比静态库具有太多优点,是更好的选择。
就性能而言,除非动态库经常被加载和卸载,否则差异微小。
唯一的区别是动态库在需要时加载,而不是内置到可执行文件中(因此始终存在,无需加载时间)。
动态库也可以被多个可执行文件重复使用。这是我过去使用动态库的主要原因。
通常情况下,您会使用动态库来减小二进制文件的大小。在运行时没有任何惩罚,除了应用程序启动时可能不重要。