c#磁盘I\O效率提升一次读取多行

0 c# text-files disk-io

众所周知,磁盘 I\O 很昂贵。我通常使用 C# 从 .txt 文件中一次读取一行。我突然想到,如果 C# 为您提供一种一次读取 100 行的方法,它需要更少的磁盘往返次数,从而减少时间。这可能吗?有没有人对如何提高效率有任何想法。我在大约一个小时内浏览了一个 100 万行的文件,一次读取和处理一行。我想看看我是否可以大大减少这个时间。

AAA*_*ddd 5

AFileStream为您执行此操作,它有一个内部缓冲区并分块读取文件。碰巧File.ReadLines使用StreamReader基于 a 的 aFileStream并返回IEnumerable基于行的 a .. 它在本质上为您做所有事情

我的建议是只使用 File.ReadLines

如果您需要对内部缓冲区和块大小进行更细粒度的控制,请使用FileStreamwith StreamReaderwhich 允许配置这些问题,除此之外...

  • “*仅一个语句中的一个大长文件*”不,它实际上不正确,您将逐行枚举该文件,这将在您枚举它时分块读取。该文件不会以一大块的形式读取,除非它适合 4k 的标准块大小 (3认同)