我有一个 C++ 程序,它从硬盘读取文件并对文件中的数据进行一些处理。我正在使用标准 Win32 API 来读取文件。我的问题是这个程序有时非常快,然后突然减慢到之前速度的 1/6。如果我在多次运行中一次又一次地读取相同的文件,那么通常第一次运行将是最慢的。然后它会保持速度,直到我读取其他一些文件集。所以我的明显猜测是分析磁盘访问时间。我使用 perfmon 实用程序并测量了我的程序的 IO Read Bytes/sec。正如预期的那样,读取的字节数存在巨大差异(约 5 倍)。我的问题是:
(1)。操作系统(在我的情况下是 Windows)是否将最近读取的文件缓存在某处,以便后续加载更快?
(2)。如果我可以保证我读取的所有文件都驻留在同一个目录中,那么有什么方法可以将它们放在硬盘中,以便我的磁盘访问时间更快?
我能为此做些什么吗?