c#内存映射文件读取

时间:2010-10-25 18:33:21

标签: c# memory-mapped-files

我正在尝试阅读一些文本文件(每个大约300 kb)。到目前为止,我一直在使用Filestream打开文件并阅读它。 (TAB DELIMITED)。但是,我听说.net 4.0中的内存映射文件。它会让我的阅读速度更快吗?

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

5 个答案:

答案 0 :(得分:6)

如果文件在磁盘上并且只需要读入内存,则使用内存映射文件根本无济于事,因为您仍然需要从磁盘读取它们。

如果你所做的只是读取文件,那么内存映射就没有意义了。

Memory mapped files用于您对文件进行密集工作(读取,写入,更改)并希望避免使用磁盘IO。

答案 1 :(得分:2)

如果您只是读取一次,那么内存映射文件没有意义;从磁盘加载数据仍然需要相同的时间。当必须对文件执行许多随机读取和/或写入时,内存映射文件表现优异,因为不需要使用搜索操作中断读取或写入操作。

答案 2 :(得分:0)

处理内存中的数据总是比通过磁盘IO执行类似的操作更快。如果您的处理是顺序的并且很容易适合内存,则可以使用File.ReadLines()逐行获取数据并快速处理它们而不会产生硬核内存开销。例如:How to open a large text file in C#

也请检查此答案:When to use memory-mapped files?

答案 3 :(得分:0)

使用 数据量,MMF不会带来任何好处。但是,一般来说,如果一个人不愿意进行测试,他会发现,使用MMF复制大(大)文件比按顺序调用ReadFile / WriteFile要快。这是由Windows内部用于MMF管理和文件IO的不同机制引起的。

答案 4 :(得分:0)

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