为了账号安全,请及时绑定邮箱和手机立即绑定

无论如何要优化这个 bc,它需要永远

无论如何要优化这个 bc,它需要永远

C#
30秒到达战场 2022-06-12 10:51:04
我已经编写了一些代码,它应该为我在一个文件中逐行存储字符串数组中的一些字符串,遗憾的是我必须为一个数组中的大约 200k 个字符串执行此操作,这需要我永远......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);        }}有什么办法可以改善这一点吗?PS我已经获得了已经写入文件的字符串数量的进度......
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

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


取而代之的是,将其打开一次:


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 行或类似的东西做一次。


查看完整回答
反对 回复 2022-06-12
  • 1 回答
  • 0 关注
  • 90 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信