问题描述
我正在用 C# 生成一个 HTML 输出文件,尽管 60 Mb 文件的速度性能似乎不可能很长。生成文件需要20分钟,这是一个非常缓慢的过程。以前大约 35 Mb,它是在 5 秒内生成的,所以我不确定是什么导致了这里的延迟。
首先,我将使用这些行开始生成报告:
public static void GenerateHtmlReport()
{
GenerateFinalResults();
HtmlFileName ??= "Report-" + $"{DateTime.Now:dd_MMM_yyyy-[HH_mm]}" + ".html";
var fileName = Path.Combine(GetRootFolder(),HtmlFileName);
using var fs = new FileStream(fileName,FileMode.Create);
using var w = new StreamWriter(fs,Encoding.UTF8);
w.WriteLine(RenderHtml.ContructReportHeader(User));
RenderHtml.ConstructHtmlBody(Results,w);
w.WriteLine(RenderHtml.ConstructFullSummaryReport(Results));
w.WriteLine(RenderHtml.ContructDashboard(Results,ResultStart));
}
如果我要写入文件的完整字符串,则需要相当长的时间,但是我认为逐条写入并没有多大帮助。
虽然这让我想到了两个问题
问候,
解决方法
答案确实是 StringBuilder。修改代码的所有部分,而不是使用 +(连接),我起诉 StringBuilder.Append() 并将其作为字符串返回。现在创建报告的时间不到 5 秒,而不是 22 分钟。所以这是一个巨大的改进。