第一个比第二个更快吗? 我不明白。
为什么它更快?
如果我们使用section对象,那么我们可以从VMM或Cache Manager获得更多缓存优势吗?
答案 0 :(得分:2)
当页面输出发生时,文件内存映射更快,因为文件本身用作分页存储。
如果内存映射文件中的内存未更改,则无需将页面刷新到页面文件,因为数据已存在于文件中,并且窗口可以从磁盘重新读取页面。 .EXE和.DLL文件使用此机制加载,因此是他们自己的页面存储。
如果写入了内存映射文件中的内存,则页面输出与使用页面文件的方式相同。可能更快,因为使用磁盘上的相同位置(受NTFS优化)。
普通API使用页面文件支持的内存来保存文件内存时的内容。
在稍微不同的透视图中,两个API都经过优化,因为内存映射文件实际上可以在引擎盖下使用读/写文件API,因此当您使用较低的抽象时,您将获得微优化
这两种机制都将使用VMM /缓存管理器。
答案 1 :(得分:0)
使用ReadFile / WriteFile涉及几个额外的内存块复制操作,因此它比使用MMF更慢。另一个问题是它会慢多少 - 这就是你需要自己衡量的东西。