【发布时间】:2020-10-30 15:38:00
【问题描述】:
有大文件。我需要快速排序。我将按部分处理适合 RAM 的文件,以避免/度使用页面文件(下一步:合并部分)。如何使用最大内存?
我的解决方案:使用WinApi文件内存映射,但不知道如何获取文件最大大小的一部分,但适合RAM(如何确定大小)?
【问题讨论】:
-
真的做不到。在您从操作系统获得最大可用 RAM 的时间和您可以申请它的时间之间,可能会出现一些其他进程并占用一些内存。即使在您获得最大 RAM 之后,也会出现一些其他进程并将您的一些内存分页。
-
为什么不直接使用不超过系统页面大小的文件映射视图呢?或者至少是系统页面大小的倍数?您可以从
GetSystemInfo()获取页面大小,然后将文件大小除以页面大小以确定所需的总页数,然后对其进行限制。您不需要最大化 RAM,也不应该尝试这样做。 -
你问了同样的问题five days ago。
标签: c++ winapi optimization memory file-mapping