无论如何,有没有要优化这个公元前的系统,这将永远花费

时间:2018-12-12 17:07:32

标签: c# performance

我写了一些代码,应该为我在文件中逐行存储一些字符串数组中的字符串,可悲的是,我必须对数组中的大约200k字符串执行此操作,这使我永远... / p>

foreach (var file in fileArray) {

    //    Console.WriteLine(file);

        string sub = file.Substring(49,file.Length - 49);
        using (StreamWriter sw = File.AppendText(folder + ".tfcs"))
        {
            sw.WriteLine(sub);   
        }
        indexfiles++;
        Console.Clear();
        Console.WriteLine("Scanning Folder:");
        Console.WriteLine(folder);
        Console.WriteLine("Filesfound:" + fileArray.Length);
        Console.WriteLine("Fileswritten to Database:" + indexfiles);
        }

}

有什么办法可以改善这个状况?

P.S。我已经获得了已写入文件的字符串数量的进度...

1 个答案:

答案 0 :(得分:20)

您要在每次循环迭代中打开和关闭文件。这几乎可以肯定是问题,或者至少是问题的一部分。

相反,将其打开一次:

using (var writer = File.AppendText(folder + ".tfcs"))
{
    foreach (var file in fileArray)
    {
        writer.WriteLine(file.Substring(49, file.Length - 49));
        indexFiles++;
    }
}
Console.Clear();
Console.WriteLine("Scanning Folder:");
Console.WriteLine(folder);
Console.WriteLine("Files found:" + fileArray.Length);
Console.WriteLine("Files written to Database:" + indexFiles);

我也将控制台输出移到了最后-清除控制台并在每次迭代中写入控制台,几乎可以肯定,这也会大大降低速度。如果您需要随时提供的进度报告,我会每100行或类似的内容进行一次。