【发布时间】:2012-06-09 04:20:26
【问题描述】:
我有一个这样的程序。它是一个 .Net Framework 4 控制台应用程序。 该程序用于从每个服务器上的每个日志文件(从前一周)收集 sc-bytes 和 cs-bytes。该程序已完成,但需要很长时间才能运行。
foreach (string server in servers)
{
foreach (string website in Directory.GetDirectories(server))
{
foreach (string file in Directory.GetFiles(website))
{
我只是想知道是否可以使用线程或 PLINQ 之类的东西来加快进程? 如果这会提高性能,我不确定实现它的最佳方法,因为为每个日志文件(甚至每个网站)设置一个新线程似乎不合逻辑,因为拥有这么多线程显然不会提高性能。
如果您需要查看更多代码,请询问,但该程序基本上读取过去 7 天内创建的每个文件的每一行,添加字节数,然后使用目录条目获取网站名称(来自ID),然后将每个网站的名称和总字节数输出到一个文本文件(最终将是一个数据库)。 我不需要任何实际代码,只需要建议(如果可能的话)提高性能的最佳方法。
谢谢。
【问题讨论】:
-
投资高端 SSD 是个好主意。这肯定比多线程应用程序更能改善这种情况
-
您的代码没有任何意义。您如何从网站获取文件?
-
对不起,也许我应该提供更多代码。我的服务器阵列中的每台服务器看起来像... servers.Add(@"\\1.1.1.1\e$\logfiles"); ...它们都直接指向一个日志文件夹,然后我使用 Directory.GetFiles.
标签: c# multithreading