.NET 4.0 内存映射文件性能

19
我想知道是否有人尝试过新的.NET 4.0内存映射文件功能?我知道它们与操作系统一样古老,但在.NET中的本地处理是新的。 有人能够测试并就性能发表意见吗?我对二进制文件随机部分的访问时间、写入速度等非常感兴趣。同时,与本地WinAPI MMF的性能比较也很好。 谢谢!

没有头绪,兄弟。你在网上找到任何基准测试了吗? - Shakeeb Ahmed
不好意思,我找不到任何确切的数字...只有技术规格和优势。 - michajas
3个回答

5
在.NET 4.0中(在新的System.IO.MemoryMappedFiles命名空间中),内存映射文件简单地包装了内存映射文件的Win32 API,这意味着它们尽可能快。这是将.NET程序集加载到内存中所使用的相同机制。实际计时数据将取决于32位与64位、您拥有多少内存、文件有多大、访问模式以及在很大程度上取决于物理磁盘硬件类型。参考:Memory-Mapped Files

谢谢,我知道这个参考资料,更准确的问题应该是这个链接:http://msdn.microsoft.com/en-us/library/ms810613.aspx(它在你提到的页面上)。我想我会自己做一些测试用例并在这里发布结果。但是,也许有人已经完成了它们? - michajas
但是,也许有人已经完成了它们?实际数字取决于上述许多因素,这可能是为什么没有标准基准可用的原因。 - Mitch Wheat
我知道这些因素,但我不考虑标准化基准,而是希望得到具有完整测试用例(硬件等)的结果。最好将其与其他方法(如FileStream等)进行比较。我之所以问这个问题,是因为我将要处理大文件(超过10GB),并从中读取随机数据。我想知道MMF是否是最佳选择 :) - michajas
michajas,你有编译一些数字吗?我可以用它们作为参考点。 - gap

3
在下面的问题中,我对内存映射文件和标准IO进行了性能测试:

使用内存映射文件的缺点

对于我的目的,我没有找到任何大的缺点,内存映射文件的性能约为标准IO的4倍,在问题中,您可以找到一些有趣的提示,了解这些文件的工作方式以及需要考虑什么。

1
在我的测试中,.NET 4.5 MMF的性能约为本机WinAPI调用性能的40%,即比本机慢两倍以上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接