我将编写一个基准测试工具,测试磁盘系统的IOPS和带宽混合,并因此使用文件支持的内存映射进行IO。由于该工具需要在POSIX和WinNT平台上运行,因此我不能仅仅使用普通的mmaps。此外,据我所知,您必须向Linux内核madvise整个文件将按顺序访问?这就引出了Boost内存映射。在类似硬件、相似质量的驱动程序和Windows、Linux和Max OS X上,Boost内存映射是否可能给我提供类似的性能?是否有人在不同系统上对Boost mmaps进行了基准测试?
我将编写一个基准测试工具,测试磁盘系统的IOPS和带宽混合,并因此使用文件支持的内存映射进行IO。由于该工具需要在POSIX和WinNT平台上运行,因此我不能仅仅使用普通的mmaps。此外,据我所知,您必须向Linux内核madvise整个文件将按顺序访问?这就引出了Boost内存映射。在类似硬件、相似质量的驱动程序和Windows、Linux和Max OS X上,Boost内存映射是否可能给我提供类似的性能?是否有人在不同系统上对Boost mmaps进行了基准测试?
我认为Boost仅提供了一个平台无关的包装器,因此不会有性能差异,但我建议您在特定情况下进行测试。
此外,Windows NT平台提供了内存映射功能--这不像内存映射是Linux特定的功能。对于Windows,您需要使用CreateFile
、CreateFileMapping
和MapViewOfFile
。Windows库的区别在于映射机制的创建与映射视图的创建是分开的。否则,功能是相同的。噢,就像在POSIX上一样,您需要清理,在这种情况下使用UnmapViewOfFile
清理视图,使用CloseHandle
清理文件映射和文件句柄。
mmap()
函数即可。 - caf