【问题标题】:How to improve general i/o to be on par with file mapping如何改进一般 i/o 以与文件映射相提并论
【发布时间】:2011-06-08 23:36:42
【问题描述】:

文件映射很棒,但是对于 32 位系统上相对较大的文件,我们应该忘记它并使用通用文件 i/o 实现所有内容。对于大的随机读取和写入,系统缓存的效果几乎与文件映射一样好。但是对于围绕小文件区域的小操作,差异是巨大的,文件 i/o 比文件映射文件的等效操作慢十倍。后者主要是因为多次调用 SetFilePointer、ReadFile、WriteFile,甚至是几个小动作。

所以我想实现或使用某种缓存(或者可能是一些技巧),它应该对小型读/写有效,但我不需要一些复杂的缓存,因为对于大型操作,Windows 做得很好。有一些已知的方法吗?

谢谢

最大

【问题讨论】:

    标签: winapi file-io io file-mapping


    【解决方案1】:

    回答我自己的问题,让其他人在未来考虑类似的方法

    看起来最好的是支持文件上的多重缓冲映射视图。在这种情况下,数组允许快速访问指向内存块(vies)的指针,如果基于请求的偏移量计算的指针有效,则应该只访问数据,如果不是 - 然后分配新视图,可选择保持视图总数到一定限度。我在阅读和写作方面都相对较快地实现了这一点,结果非常有希望

    【讨论】:

      猜你喜欢
      • 2011-01-19
      • 2011-10-11
      • 2016-05-27
      • 2011-12-15
      • 2017-06-08
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多