FIle.Exists()适合大目录吗?

  • 本文关键字:Exists FIle c#
  • 更新时间 :
  • 英文 :


我之前问过这个问题,但因为没有"聚焦"而没有回答。所以我删除了这个问题,提供一个我希望更有针对性的问题:

我有一个任务,我需要在网络上寻找一个图像文件。这个文件所在的文件夹是通过网络的,这个文件夹可以有1百万到2百万的图像。有些图片有10兆字节大。我无法控制此文件夹,因此无法对其进行组织。我只是提供应用程序给客户在这个大文件夹中查找图像文件。

我打算使用c# file. exist()方法来查找文件。

是File的性能。是否存在受目录中文件数量和/或文件大小的影响?

file . exists()的性能主要取决于底层文件系统(另一端机器的),当然还有网络。任何合理的文件系统都会以这样一种方式实现它:大小无关紧要。

但是,由于索引了大量的条目,因此总文件数可能会影响性能。但是,一个自尊的文件系统将使用某种日志(甚至常数)查找,所以它应该可以忽略不计(即使对于5mil文件和日志规模,FS也必须最多扫描23个条目,这没什么)。网络肯定会成为这里的瓶颈。

话虽如此,我和YMMV鼓励你自己测量一下。

根据我的经验,图像的大小不是一个因素,但它们的数量将是一个因素。这些文件夹大得不合理,并且对于许多不同的I/O操作来说会很慢,包括列出它们。

除此之外,这是一个非常简单的测试操作,您真的应该自己对其进行基准测试。创建一个简单的控制台应用程序,它可以连接到网络文件夹并检查已知的现有文件和已知的丢失文件,这将使您了解正在查看的每个操作所需的时间。你不必为了测试一个标准库函数而做大量的实现。

相关内容

最新更新