快速读取大量文件

Tim*_*Tim 7 c# .net-2.0

我有大量(> 100k)相对较小的文件(1kb - 300kb),我需要读入和处理.我正在循环遍历所有文件并使用File.ReadAllText读取内容,处理它,然后读取下一个文件.这很慢,我想知道是否有一种很好的方法来优化它.

我已经尝试过使用多个线程,但由于这似乎是IO绑定,我没有看到任何改进.

Ree*_*sey 7

你很可能是正确的 - 读取那么多文件可能会限制你的潜在加速,因为磁盘I/O将是限制因素.

话虽这么说,你很可能通过将数据处理传递到一个单独的线程来做一点改进.

我建议尝试使用单个"生产者"线程来读取您的文件.该线程将受IO限制.当它读取文件时,它可以将"处理"推送到ThreadPool线程(.NET 4任务也适用于此),以便进行处理,这将允许它立即读取下一个文件.

这将至少占用总运行时间的"处理时间",使得您的工作总时间几乎与磁盘IO一样快,只要您有一两个额外的核心工作...