我正在编写一个小应用程序,从更大的样本堆中提取每种特定类型的一些有效样本。
结构如下:
根 - >国有>&型 - GT;样品
我的程序在状态中巡航,并抓取每个唯一类型以及该类型的路径。一旦获得所有这些,它将通过每种类型,并选择X随机样本,用户提供X.
该程序在本地运行良好,但通过网络,它显然慢得多。我已采取措施来帮助解决这个问题,但我最后一部分就是快速从TYPE目录中获取随机样本。
在本地,我使用
List<String> directories = Directory.GetDirectories(kvp.Value).ToList();
通过网络运行时,这是瓶颈。我有一种感觉,这可能是不可能的,但有没有办法从TYPE目录中抓取5个随机样本而不首先识别所有样本?
希望我已经足够清楚了,谢谢你。
答案 0 :(得分:0)
也许尝试使用DirectoryInfo,当对特定目录进行大量调用时,由于安全性未在每次访问时进行检查,因此速度更快。
答案 1 :(得分:0)
您可能会发现使用DirectoryInfo对象获得所需的根目录和子文件夹以及以此方式列出目录的速度会有所提高。由于.NET的延迟初始化策略意味着它将使用您在样本中使用的静态目录方法进行更多的网络往返,这将使您的速度提高。
我想下一个问题是为什么速度很重要?您是否考虑过在自己的设计缓存中维护一个uptodate索引以便快速访问?使用FileSystemWatcher,常规民意调查,还是两者兼而有之?
我想您可能也对此链接感兴趣:Checking if folder has files
...它包含一些有关将网络调用限制在最低限度的信息,方法是从一次调用中检索有关整个目录结构的信息。毫无疑问,这会增加你的记忆要求。
每种文件的名称是否可预测?您是否可以随意预测一些样品名称并直接阅读它们?