【发布时间】:2015-08-18 14:58:05
【问题描述】:
我在读取大文件时遇到性能问题。我想使用内存映射来解决问题。输入文件最大为 10 GB,我的程序(用 C++ 编写)是用 32 位配置构建的,目标系统是 Windows 64 位,具有 24 GB 的 RAM。这是否可以将整个大文件映射到内存?如果是,我的程序如何访问“高”地址区域(> 0xFFFFFFFF,理论上,因为我的程序是 32 位的,所以指针也是 32 位的)?
【问题讨论】:
-
你不编译 64 位程序有什么原因吗?
-
程序是很久以前写的。正在逐步升级,64位在计划中,但不是现在。
-
您只能以块的形式映射文件,请参阅 MSDN MapViewOfFile msdn.microsoft.com/en-us/library/windows/desktop/… 。请注意,它使用 2 个 DWORDS(高、低)作为视图开始位置的文件偏移量。尝试一次映射
-
为什么你认为内存映射会比常规文件 i/o 更快?这对于某些类型的访问模式可能是正确的,但在大多数情况下并非如此。
-
@AdrianMcCarthy:请查看stackoverflow.com/questions/32047626/… 了解有关我的问题的更多详细信息
标签: c++ memory-mapped-files memory-mapping