【发布时间】:2017-08-25 23:13:50
【问题描述】:
我正在使用一个包含大约 3000 个文件的目录。我知道 NTFS 线程谈到 CreateFile 在读取 100,000 或数百万个文件时速度很慢。我的数字还没有那么高,但 CreateFile 仍然需要大约 4-7 毫秒才能完成,当我打开 3000 个文件时,这会加起来。所以我的问题类似于下面的帖子。在某些机器上,当我调用 CreateFile 时速度快如闪电,而在其他机器上它是 4-7 毫秒的速度。我试过 Fat32 文件系统和 NTFS 都没有运气,两者都很慢。 Win7 和 Win10 一样,都慢。我注意到的唯一共同点是,速度较慢的机器似乎在使用 SATA/RAID 控制器的机器上,而在具有标准 SATA 的机器上速度较快。所有机器都使用 SSD 驱动器。
作为说明:作为实验的一部分,我正在做与下面的线程相同的事情。我有一个调用 CreateFile 然后 CloseHandle 的简单程序。其他什么都不做,并且在某些机器上非常慢(4-7ms CreateFile),而在其他机器上则非常快,如上所述。以下线程是一个非常相似的问题,但从来没有一个好的答案。
Why is windows so slow in opening files first time and is there a faster way
谢谢
dgraves
【问题讨论】:
-
杀毒软件?
-
第一次打开文件时,内存/缓存管理器和文件系统中有额外的工作(例如分配文件/链接控制块和安全描述符),不一定要重复当文件关闭和重新打开时,取决于文件系统的设计和使用。但这并不能解释长达 7 毫秒的延迟。按照@HarryJohnston 的建议,一定要在禁用所有恶意软件扫描程序的情况下尝试。
-
没有运行杀毒软件。另外我刚刚发现如果我在安全模式下运行程序,它运行缓慢的机器不会出现这个问题。
标签: c++ windows createfile