在LANnetworking共享中,我有成千上万的0到8kb之间的小文本文件。 我可以使用一些与kernel32.dll和FindFileEx互操作的调用来recursion地拉取每个文件的完全限定的UNCpath的列表,并将这些path存储在集合类(如List<string>内存中。 使用这种方法,我能够相当快地填充List<string> (相对于Directory.GetFiles 3分钟,每个50k文件名约30秒)。
但是,一旦我抓取目录并将文件path存储在List<string>我现在想要对存储在列表中的每个path进行传递,并读取小文本文件的内容,并根据值读入。
作为一个testing平台,我遍历每个文件path在List<string>中存储了42,945个文件path到这个LANnetworking共享,并在每个FileFullPath上执行以下行:
StreamReader file = new StreamReader(FileFullPath); file.ReadToEnd(); file.Close();
因此,只需这些行,我的列表中存储的所有42,945个文件path需要13-15分钟的运行时间。
检查是否安装了postscript字体
如何获得服务器上打开的HTTP连接的总数?
寻找一个.NET SNMP扩展代理
任务使用SdkToolsPath找不到“AL.exe”
有没有更好的方式来加载通过C#的许多小文本文件? 有一些我应该考虑的互操作吗? 或者这是我所能期待的最好的? 这似乎是一个非常长的时间。
获取任务栏中所有窗口的句柄
升级到Windows 10之后,混合模式程序集就build立了
我应该使用什么gacutil.exe?
我如何尝试创build一个文件,并返回一个值,指出它是否被创build?
哪些Windows的程序或服务可能会改变文件的LastAccessed属性?
我会考虑使用Directory.EnumerateFiles ,然后在读取文件时处理文件。
这将防止需要一次实际存储42,945个文件的列表,以及使用PLINQ(取决于文件的处理要求)并行地执行某些处理的可能性。
如果处理在总时间中有相当大的cpu部分(并且不是纯粹的I / O限制),则这可能在完成所需时间方面提供很大的好处。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。