.so大小会影响虚拟功能的性能

时间:2015-09-30 07:14:21

标签: c++ linux performance

最近,我遇到了性能问题。在Vtune结果中,虚拟功能成本始终是第一成本,当我减小从48M到37M的尺寸时,性能似乎更好,提高3.9%。

我想知道,.so大小是否会影响虚拟功能,如果是这样,为什么?谢谢!

2 个答案:

答案 0 :(得分:2)

它不是纯粹的 size (虽然当然会在加载程序后影响分页),但加载程序时加载器必须进行的调整的数量。您可以通过设置环境变量

来查看
LD_DEBUG=statistics

虚拟功能尤其需要在加载过程中进行大量调整。有关此问题的讨论,

答案 1 :(得分:0)

我使用@ErikAlapää提供的文章(blogs.oracle.com/ali/entry/the_cost_of_elf_symbol)中的方法,当dlopen时使用RTLD_LAZY而不是RTLD_NOW。但是,似乎没有任何帮助。虽然我用较少的对象编译它,但它变得更好。看来分页缓存确实会影响流程性能。