c++ - DLL缓存问题

标签 c++ c caching dll shared-libraries

从尽可能高的性能角度来看,staticdynamic 库链接选项是否也会因为 DLL 的缓存未命中率较高而对性能产生影响?

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

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

最佳答案

“整个程序加载到一个地方”:你的系统的内存管理器仍然会根据自己的喜好将可执行内存页映射到物理内存上——你无法控制它。在运行时,如果需要可执行代码的其他部分,物理页面将换出到磁盘。

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

总结:

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

关于c++ - DLL缓存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7429051/

相关文章:

c++ - 在 linux 上检测绑定(bind)挂载

c++ - 从 SoundTouch 音频库转换 short[] 以进行播放

C fread() 和缓冲区管理

c - 尝试使用 semget() 获取信号量集,但我不断收到 EEXIST 错误,即使在创建新 key 后也是如此

c - 字符串指针修改

caching - 为什么对 Facebook IFrame 应用 Canvas 页面的第一个请求是 POST 请求?

c++ - std::ranges::to 是否允许转换为 std::map?

c++ - 如果在声明类型之前引用了类型,如何在 Xtext IDE 中显示错误

asp.net - 从静态方法读取和写入 ASP.NET 缓存

caching - Grails ehcache.xml自定义缓存配置