linux 中的动态库时序和 CPU 负载分析

Dynamic library timing and CPU load analysis in linux

我正在用一个动态库写代码。

当我使用 dlopen/dlsym 调用来访问库函数时,与使用 -l 动态链接库并直接访问函数相比,cpu 加载和执行更多。

任何人都可以帮助理解为什么会这样吗?

静态 linking 需要更多时间,i/o 在 link 时间,因为所有绑定都发生在 linking 期间。结果是一个可执行文件,无需进一步处理即可调用库代码。

动态加载需要在运行时进行更多工作。它必须查找 .so 文件,打开它,并绑定引用的地址,所有这些都在第一次调用它之前完成。您正在测量的是预期的和正常的。