从尽可能高的性能角度来看,static
与 dynamic
库链接选项是否也会因为 DLL 的缓存未命中率较高而对性能产生影响?
我的想法是,当库被静态
链接时,整个程序被加载到一个地方或附近。但是当动态
链接时,DLL可以加载到某处并且它的变量可以分配“太远”。
这是真的,还是说 DLL 在 缓存未命中率
方面没有性能损失? (仅限快速 C/C++ 代码)
最佳答案
“整个程序加载到一个地方”:你的系统的内存管理器仍然会根据自己的喜好将可执行内存页映射到物理内存上——你无法控制它。在运行时,如果需要可执行代码的其他部分,物理页面将换出到磁盘。
当多个进程实际上可以共享库时,使用共享库可以减少物理内存中所需的代码页数。
总结:
NO:动态或静态链接不直接影响缓存未命中。动态链接可以减少高度重用库的缓存未命中。
关于c++ - DLL缓存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7429051/