我将编写一个基准测试工具来测试磁盘系统的 IOPS 和带宽的组合,因此我将转向 IO 的文件支持内存映射。因为该工具需要在 POSIX 和 WinNT 平台上运行,所以我不能只使用普通的旧 mmap。另外根据我的理解,你必须让 Linux 内核疯狂地认为整个文件将被顺序访问?这让我想到了 Boost 内存映射。在 Windows、Linux 和 Max OS X 上,Boost 内存映射是否有可能在具有类似质量驱动程序的类似硬件上为我提供类似的性能?有没有人跨系统对 Boost mmap 进行基准测试?
最佳答案
我怀疑不会有性能差异,因为 Boost 只是提供了一个与平台无关的包装器工具,但我建议您在您的特定情况下对其进行测试。
另外,Windows NT 平台提供了内存映射功能——内存映射并不是 Linux 特有的功能。对于 Windows,您需要 CreateFile
、CreateFileMapping
和 MapViewOfFile
。 Windows 库的不同之处在于映射机制的创建与映射 View 的创建是分开的。否则功能是等效的。哦,就像在 POSIX 上一样,您需要清理,在这种情况下,在 View 上使用 UnmapViewOfFile
,在文件映射和文件句柄上使用 CloseHandle
。
关于c++ - boost mmap 性能与 native 内存映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3614337/