我有大量(>100k)相对较小的文件(1kb - 300kb)需要读入和处理。我目前正在循环所有文件并使用File.ReadAllText
读取内容,处理它,然后读取下一个文件。这是相当慢的,我想知道是否有一个好的方法来优化它。
我已经尝试过使用多线程,但由于这似乎是 IO 限制,所以我没有看到任何改进。
您很可能是正确的 - 读取这么多文件可能会限制您的潜在加速,因为磁盘 I/O 将成为限制因素。
话虽这么说,您很可能可以通过将数据处理传递到单独的线程中来进行一些小的改进。
我建议尝试使用单个“生产者”线程来读取您的文件。该线程将受到 IO 限制。当它读取文件时,它可以将“处理”推入 ThreadPool 线程(.NET 4 任务也非常适合此操作)以便进行处理,这将允许它立即读取下一个文件。
这至少会减少总运行时间中的“处理时间”,使您的工作总时间几乎与磁盘 IO 一样快,前提是您有一两个额外的核心可以使用......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)