使用内存映射文件读取打包文件的最快方法?

时间:2015-06-27 04:20:50

标签: c++ windows winapi file-io memory-mapped-files

我有一个专为64位系统设计的C ++应用程序。目前我正在研究packfile系统的Windows实现。 packfiles本身包含几千个单独压缩的文件。访问模式应该是在不同时间访问不同文件的多个线程,但这些单独的文件(几乎)总是按顺序访问。这些文件应该在程序的持续时间内保持内存映射,偶尔访问,但通常是短暂的突发,一次访问许多文件。

在这种情况下,最大化Windows能否执行预读优化的最佳方法是什么?

我对单个文件映射的关注是,访问不是真正顺序的,而是基本上完全随机的本地顺序。我看到两个选项,但我不知道哪个更好,或者是否有其他选择:

  1. 为每个我希望内存映射的子文件创建一个新的文件句柄,然后为每个子文件创建一个新的文件句柄。
  2. 为packfile创建单个文件句柄,然后为每个子文件创建唯一的文件映射。
  3. 我的直觉是#1会让Windows做得最好,但我担心会分配大量的文件句柄。想法?

0 个答案:

没有答案