“模块未在默认加载地址加载。” - 如今这句话有意义吗?
“模块未在默认加载地址加载。” - 从性能的角度来看,这个警告消息现在有意义吗?
回到 10-20 年前,如果将模块加载到首选基地址以外的基地址,则重新映射 func 地址可能会对性能造成一些影响,但现在即使不是更少,也只是额外几毫秒。
我是对的还是我错过了什么?
"the module didn't load at the default load address." - does this warning message makes sense nowadays from a performance point of view.
back to 10-20 years ago there was probably some performance hit to re-map func addresses in case if a module is loaded to a base address other than preferred, but now it is just a few extra milliseconds if not less.
Am I right or am I missing something?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
从性能的角度来看,可能不会,但它会对内存使用产生影响。 Windows DLL 不是与位置无关的代码,因此当必须将 DLL 重新定位到不同的地址,链接器必须实际修改其机器代码。这意味着它不能与其他进程共享;每个程序都有自己单独的代码副本。另一方面,当 DLL 在多个程序中加载到其首选地址时,可以在它们之间共享相同的(未修改的)页面,从而节省内存。
From a performance standpoint, probably not, but it makes a difference in memory usage. Windows DLLs aren't position-independent code so when a DLL has to be relocated to a different address, the linker has to actually modify its machine code. That means it can't be shared with other processes; each program gets its own separate copy of the code. On the other hand, when a DLL loads at its preferred address in multiple programs, the same (unmodified) pages can be shared among them, which saves memory.