读取数百个文件的速度较慢

本文关键字:文件 速度 百个 读取 | 更新日期: 2023-09-27 18:00:03

我在处理更多二进制文件时遇到问题。我有很多文件夹,每个文件夹中大约有200个bin文件。

我选择其中的两个目录,然后这两个目录中的所有bin文件(它们的路径)都保存到List中,并用这个列表进行一些过滤。最后,列表中有大约200个bin文件。

然后,我对所有过滤后的文件进行迭代,从每个文件读取第一个4x8字节(我尝试了FileStreamBinaryReader)。所有这些操作大约需要2-6秒,但这只是第一次。下次足够快了。如果文件在很长一段时间(大约30分钟)内没有发生任何问题,则问题会再次出现。

所以可能是缓存的问题还是什么?

有人能帮帮我吗?感谢

读取数百个文件的速度较慢

文件的句柄很可能被处理掉了,这就是为什么GC会在一段时间后删除它们,并且需要更长的时间,或者只是操作系统将文件加载到RAM中,然后从那里向您提供这些文件,这就是它更快的原因,但这不是问题所在,进程运行缓慢,因为它很慢,第二次速度更快并不重要,因为你不能依赖它。

我的建议是尽可能多地并行处理这些文件,以便能够充分利用手头硬件的功能。

首先隔离处理文件的代码,然后在Parallel.ForEach中运行代码,看看这是否有帮助。

一种可能性是您的驱动器将进入睡眠状态(通常情况下,驱动器将配置为在15-30分钟后断电)。当硬盘恢复速度时,这可能会增加显著的延迟(5秒是一个典型的数字)。

幸运的是,这是一件很容易测试的事情。只需将断电时间设置为6小时,然后测试行为是否发生了变化。