1

我正在使用 NSM 在单独的进程之间交换数据,并且一切正常且花花公子,但是在页面文件中声明了内存空间,我认为这是一种默认方式。

   hMapFile = CreateFileMapping(
             INVALID_HANDLE_VALUE,    // use paging file
             NULL,                    // default security
             PAGE_READWRITE,          // read/write access
             0,                       // maximum object size (high-order DWORD)
             BUF_SIZE,                // maximum object size (low-order DWORD)
             szName);                 // name of mapping object

我的问题是,文件是在磁盘上声明的,然后将实际内容放入 RAM 中,然后从那里访问吗?我一直在我的家用计算机上进行实验,这是 i5 4 核、16 GB 1800 MHz RAM 和 SSD,以及实验室的 i9 12 核、32 GB 2800 MHz RAM 和HDD上的相同实验。

“更好”的计算机要慢很多倍(相同的实验参数),但有人告诉我它与 SSD 或 HDD 没有任何关系。实验算法大量使用 NSM 进行数据交换,所以如果它必须访问磁盘上的文件,我可以看到为什么它会更慢,但如果都是 RAM ......那么呢?

4

1 回答 1

1

答案是“视情况而定”。当有足够的 RAM 并且内存处于活动状态时,Windows 将不会使用该磁盘。我们当然不知道您的程序需要多少共享内存或其他用途。

于 2018-06-15T06:55:05.200 回答