1

我正在从指定路径读取所有文件(大约 3000 个文件,大小为 50 GB),一次读取 4k 字节。下面是相同的代码。我的查询是当我在任务管理器中看到应用程序的 CPU 和内存时,我可以看到 IO 读取逐渐增加到高水平,我可以理解这可能是因为 4k 读取,但这会影响其他事情或其ok 增加IO Read。FileStream 是否也是读取文件的最佳方式,因为它不会将整个文件加载到内存中?

fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)

do
{
   BytesRead = fileStream.Read(Buffer, 0, MAX_BUFFER);
}
while (BytesRead != 0);

fileStream.Close();
4

1 回答 1

1

检查Hans Passant对这个问题的回答,我觉得很清楚。

文件已被文件系统缓存缓冲,您只需要选择一个不会强制 FileStream 使本机 Windows ReadFile() API 调用过于频繁地填充缓冲区的缓冲区大小。不要低于 1 KB,超过 16 KB 会浪费内存。

也看看这篇文章,它提供了一些基准测试代码。

于 2013-04-16T07:42:56.070 回答