【问题标题】:.NET 4.0 Memory Mapped Files Performance.NET 4.0 内存映射文件性能
【发布时间】:2011-01-20 22:38:10
【问题描述】:

我想知道是否有人尝试过新的 .NET 4.0 内存映射文件功能? 我知道它们与 OS 一样古老,但 .NET 中的本机处理是新的。

有没有人能够对此进行测试并谈谈性能? 我对二进制文件随机部分的访问时间、写入速度等非常感兴趣。与本机 WinAPI MMF 的性能比较也会很好。

谢谢!

【问题讨论】:

  • 不知道兄弟你在网上没有得到任何基准
  • 不,我找不到任何可靠的数字……只有技术规格和优势。

标签: c# performance .net-4.0 binaryfiles memory-mapped-files


【解决方案1】:

.NET 4.0 中的内存映射文件(在新的System.IO.MemoryMappedFiles 命名空间中)只需为内存映射文件包装 Win32 API。

这意味着它们尽可能快。这与用于将 .NET 程序集加载到内存中的机制相同。

就实际计时数字而言,这将取决于 32 位还是 64 位、您拥有多少内存、文件有多大、访问模式以及在很大程度上取决于物理磁盘硬件的类型。

参考:Memory-Mapped Files

【讨论】:

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

在以下问题中,我对 MemoryMapped Files 与标准 IO 进行了性能测试:

Disadvantages of using memory mapped files

我没有发现任何大的缺点,内存映射文件的性能大约快 4 倍,在问题中,您可以找到一些关于这些文件的工作方式和需要考虑的有趣提示。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-06
      • 2011-04-28
      • 2023-03-25
      • 2016-02-23
      相关资源
      最近更新 更多