c – DLL缓存问题

从最高性能的角度来看,静态与动态库链接选项是否也会影响性能,因为DLL的缓存缺失率较高?

我的想法是,当一个库静态链接时,整个程序被加载到一个地方或附近.但是当动态链接时,DLL可以在某处加载,并且它的变量可以“分配得太远”.

是真的,或者在缓存未命中率方面没有DLL的性能损失? (仅限快速C/C++代码)

最佳答案
“整个程序加载到一次”:你的系统的内存管理器仍然会将可执行内存页映射到它喜欢的物理内存 – 你无法控制它.在运行时,如果需要可执行代码的其他部分,物理页面将被换出到磁盘.

当多个进程实际可以共享库时,使用共享库可以减少物理内存中所需的代码页数.

总结:

NO:动态或静态链接不会直接影响缓存未命中.动态链接可以减少高度重用库的高速缓存未命中.

转载注明原文:c – DLL缓存问题 - 代码日志