c#内存映射文件读取

c#内存映射文件读取,c#,memory-mapped-files,C#,Memory Mapped Files,我正在尝试读取一些文本文件(每个大约300 kb)。到目前为止,我一直在使用Filestream打开文件并读取它。(以制表符分隔)。然而,我听说了.NET4.0中的内存映射文件。这会让我的阅读速度更快吗 是否有任何示例代码可以读取简单文件并比较性能?如果文件在磁盘上,只需要读入内存,那么使用内存映射文件将毫无帮助,因为您仍然需要从磁盘读取它们 如果您所做的只是读取文件,那么在内存中映射它们是没有意义的 用于在密集处理文件(读取、写入、更改)并希望避免磁盘IO时使用。如果只读取一次,则内存映射文件

我正在尝试读取一些文本文件(每个大约300 kb)。到目前为止,我一直在使用Filestream打开文件并读取它。(以制表符分隔)。然而,我听说了.NET4.0中的内存映射文件。这会让我的阅读速度更快吗


是否有任何示例代码可以读取简单文件并比较性能?

如果文件在磁盘上,只需要读入内存,那么使用内存映射文件将毫无帮助,因为您仍然需要从磁盘读取它们

如果您所做的只是读取文件,那么在内存中映射它们是没有意义的


用于在密集处理文件(读取、写入、更改)并希望避免磁盘IO时使用。

如果只读取一次,则内存映射文件没有意义;从磁盘加载数据仍然需要相同的时间。当必须对一个文件执行许多随机读取和/或写入操作时,内存映射文件会非常出色,因为不需要使用seek操作中断读取或写入操作。

处理内存中的数据总是比通过磁盘IO执行类似操作快。如果您的处理是连续的,并且很容易放入内存,那么您可以使用来逐行获取数据并快速处理它们,而无需硬内存开销。例如:


也检查一下这个答案:

与您的数据量相比,MMF没有任何优势。然而,一般来说,如果你费心进行测试,他会发现,使用MMF复制大(巨大)文件比按顺序调用ReadFile/WriteFile要快。这是由Windows内部用于MMF管理和文件IO的不同机制造成的

不建议使用内存映射文件读取文本文件。要读取文本文件,您可以使用Filestream。MMP最好读取二进制数据。

以及无法将整个文件数据放入内存的情况。