C++ 那么大小会影响虚拟函数的性能吗

C++ 那么大小会影响虚拟函数的性能吗,c++,linux,performance,C++,Linux,Performance,最近,我遇到了一个性能问题。在Vtune结果中,虚拟函数成本始终是第一成本,当我将so大小从48M减小到37M时,性能似乎更好,提高了3.9% 我想知道,.so大小真的会影响虚拟函数的性能吗?如果会,为什么?谢谢 这不仅仅是大小(当然,在加载程序后会影响分页),而是加载程序加载时必须进行的调整次数。您可以通过设置环境变量看到这一点 LD_DEBUG=statistics 虚拟功能尤其需要在加载过程中进行大量调整。就此进行讨论, 我使用@ErikAlapääa提供的文章(blogs.or

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

我想知道,.so大小真的会影响虚拟函数的性能吗?如果会,为什么?谢谢

这不仅仅是大小(当然,在加载程序后会影响分页),而是加载程序加载时必须进行的调整次数。您可以通过设置环境变量看到这一点

LD_DEBUG=statistics
虚拟功能尤其需要在加载过程中进行大量调整。就此进行讨论,


我使用@ErikAlapääa提供的文章(blogs.oracle.com/ali/entry/the_cost_of_elfäu symbol)中的方法,在打开so时使用RTLD_LAZY而不是RTLD_。然而,这似乎毫无帮助。当我用更少的对象编译它时,它会变得更好。分页缓存似乎确实会影响进程性能

不,但它会影响分页位置和其他类似的事情。正如前面的评论员所提到的,大小会影响分页(以及缓存性能)。值得注意的是,Linux libs似乎比WinBloat libs大得多:另外,这里有一个关于ELF符号哈希和查找速度优化的链接:@ErikAlapä,这似乎对我的问题很有帮助,我会再试一次,谢谢!