Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用内存映射文件读取打包文件的最快方法? 我有一个C++应用程序,它只为64位系统设计。目前,我正在研究打包文件系统的Windows实现。packfile本身将数千个单独的压缩文件合并到其中。访问模式应该是多个线程在不同的时间访问不同的文件,但是这些单独的文件(几乎)总是按顺序访问的。在程序运行期间,这些文件将保持内存映射,偶尔访问,但通常是在短时间内突发访问,同时访问多个文件_C++_Windows_Winapi_File Io_Memory Mapped Files - Fatal编程技术网

使用内存映射文件读取打包文件的最快方法? 我有一个C++应用程序,它只为64位系统设计。目前,我正在研究打包文件系统的Windows实现。packfile本身将数千个单独的压缩文件合并到其中。访问模式应该是多个线程在不同的时间访问不同的文件,但是这些单独的文件(几乎)总是按顺序访问的。在程序运行期间,这些文件将保持内存映射,偶尔访问,但通常是在短时间内突发访问,同时访问多个文件

使用内存映射文件读取打包文件的最快方法? 我有一个C++应用程序,它只为64位系统设计。目前,我正在研究打包文件系统的Windows实现。packfile本身将数千个单独的压缩文件合并到其中。访问模式应该是多个线程在不同的时间访问不同的文件,但是这些单独的文件(几乎)总是按顺序访问的。在程序运行期间,这些文件将保持内存映射,偶尔访问,但通常是在短时间内突发访问,同时访问多个文件,c++,windows,winapi,file-io,memory-mapped-files,C++,Windows,Winapi,File Io,Memory Mapped Files,在这种情况下,最大化Windows执行预读优化能力的最佳方法是什么 我对单个文件映射的关注是,访问不是真正的顺序,而是基本上完全随机的,具有局部顺序性。我看到两个选项,但我不知道哪一个更好,或者是否更喜欢另一个选项: 为我希望内存映射的每个子文件创建packfile的新文件句柄,然后为每个子文件创建FileMapping和MapViewOfFile 为packfile创建单个文件句柄,然后为每个子文件创建唯一的文件映射 我的直觉是#1会让Windows做得最好,但我担心会分配成吨的文件句柄。想法

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

我对单个文件映射的关注是,访问不是真正的顺序,而是基本上完全随机的,具有局部顺序性。我看到两个选项,但我不知道哪一个更好,或者是否更喜欢另一个选项:

  • 为我希望内存映射的每个子文件创建packfile的新文件句柄,然后为每个子文件创建FileMapping和MapViewOfFile
  • 为packfile创建单个文件句柄,然后为每个子文件创建唯一的文件映射
  • 我的直觉是#1会让Windows做得最好,但我担心会分配成吨的文件句柄。想法