我想知道是否有人尝试过新的 .NET 4.0 内存映射文件功能?我知道它们与 OS 一样古老,但 .NET 中的本机处理是新的。
有没有人能够对此进行测试并谈论性能?我对二进制文件随机部分的访问时间、写入速度等非常感兴趣。与本机 WinAPI MMF 的性能比较也会很好。
谢谢!
我想知道是否有人尝试过新的 .NET 4.0 内存映射文件功能?我知道它们与 OS 一样古老,但 .NET 中的本机处理是新的。
有没有人能够对此进行测试并谈论性能?我对二进制文件随机部分的访问时间、写入速度等非常感兴趣。与本机 WinAPI MMF 的性能比较也会很好。
谢谢!
.NET 4.0 中的内存映射文件(在新的System.IO.MemoryMappedFiles命名空间中)只是为内存映射文件包装了 Win32 API。
这意味着它们尽可能快。这与用于将 .NET 程序集加载到内存中的机制相同。
就实际计时数字而言,这将取决于 32 位还是 64 位、您拥有多少内存、文件有多大、访问模式以及在很大程度上取决于物理磁盘硬件的类型。
参考:内存映射文件
在以下问题中,我对 MemoryMapped Files 与标准 IO 进行了性能测试:
对于我的目的,我找不到任何大的缺点,内存映射文件的性能大约快 4 倍,在问题中你可以找到一些关于这些文件的工作方式和需要考虑的有趣提示。
在我的测试中,.NET 4.5 MMF 的性能大约是本机 WinAPI 调用性能的 40%,即慢了两倍多。