第一个比第二个快吗? 我不明白这一点。
为什么它更快?
如果我们使用section对象,那么我们可以从VMM或Cache Manager中获得更多的caching好处?
当页面输出发生时,文件内存映射速度更快,因为文件本身被用作分页存储。
如果内存映射文件中的内存未更改,则不需要将页面刷新到页面文件,因为数据已在文件中,而且窗口可以从磁盘重新读取页面。 .EXE和.DLL文件使用此机制加载,因此是他们自己的页面存储。
如果内存映射文件中的内存被写入,则页面输出与分页文件被使用时相同。 使用磁盘上相同的地方可能会更快(受NTFS优化)。
普通的API使用页面文件支持的内存来保存内存中的文件内容。
从略有不同的角度来看,这两种API都经过了优化,因为内存映射文件实际上可以用在读写文件API下面,所以当你使用较低的抽象
这两种机制都将使用VMM /缓存管理器。
ReadFile / WriteFile的使用涉及到多个额外的内存块复制操作,因此比使用MMF要慢。 另一个问题是速度会慢多少 – 这就是你需要测量自己的东西。