【问题标题】:Why does Directory.GetFiles() run faster on subsequent runs?为什么 Directory.GetFiles() 在后续运行中运行得更快?
【发布时间】:2012-09-13 05:13:35
【问题描述】:

我不确定是什么原因造成的,所以如果我在搜索中找不到我需要的信息,请原谅我。这是一个例子:

假设我们有一个包含 1,000,000 个文件的文件夹。运行 Directory.GetFiles() 将需要几分钟。但是,之后立即再次运行它只需几秒钟。为什么会这样?对象是否缓存在某处?怎么才能用原来的时间运行呢?

【问题讨论】:

    标签: c# performance caching execution


    【解决方案1】:

    硬盘具有内部缓存,有助于加快后续读取速度。尝试在完全不同的扇区中读取一堆其他目录信息以清除缓存。

    【讨论】:

    • 所以不是.NET优化,而是HD?
    • 操作系统可能也在 RAM 中缓存它。很难准确地说出哪个缓存级别让您在第二遍时读取得如此之快。
    • 有没有办法找出它是什么?我怎样才能知道哪些目录位于不同的扇区中,以便进行测试?
    • 我对较低级别的东西不太了解。如果你想在不同的扇区缓存一些东西,把一些非常大的文件(几个 gigs)读到内存中,然后在你翻阅它的时候把数据扔掉。
    猜你喜欢
    • 2023-03-18
    • 2020-01-02
    • 2012-06-29
    • 1970-01-01
    • 2014-03-12
    相关资源
    最近更新 更多