【问题标题】:Windows CreateFile slow when opening a large number of files打开大量文件时 Windows CreateFile 缓慢
【发布时间】: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


【解决方案1】:

所以我错了。我没有安装任何第三方防病毒软件,但仍然安装了 Microsoft Security Essentials。这绝对是问题所在,并且在 MSE 运行时 CreateFile 会变慢是有道理的。因此,如果您运行 MSE 或 Windows Defender,这将显着减慢 CreateFile。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-31
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    相关资源
    最近更新 更多