2

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

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

4

5 回答 5

6

如果文件在磁盘上并且只需要读入内存,那么使用内存映射文件根本没有帮助,因为您仍然需要从磁盘读取它们。

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

当您对文件进行大量工作(读取、写入、更改)并希望避免磁盘 IO 时,可以使用内存映射文件。

于 2010-10-25T18:35:17.190 回答
2

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

于 2010-10-25T18:36:06.007 回答
0

处理内存中的数据总是比通过磁盘 IO 做类似的事情要快。如果您的处理是顺序的并且很容易放入内存中,您可以使用File.ReadLines()逐行获取数据并快速处理它们,而不会产生硬内存开销。这里的例子:如何在 C# 中打开一个大文本文件

也检查这个答案:何时使用内存映射文件?

于 2010-10-25T18:51:56.400 回答
0

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

于 2010-10-25T18:54:52.953 回答
0

不建议将 Memory Mapped File 读取文本文件。要读取文本文件,您正在使用 Filestream。MMP 最好读取二进制数据。

于 2011-10-21T22:54:26.303 回答