gpt4 book ai didi

c# - 重构 - 速度提升

转载 作者:太空狗 更新时间:2023-10-30 00:36:02 25 4
gpt4 key购买 nike

我怎样才能让这个功能更有效率。目前运行时间为 6 - 45 秒。我在这个特定方法上运行了 dotTrace profiler,它的总时间在 6,000 毫秒到 45,000 毫秒之间。大部分时间花在“MoveNext”和“GetEnumerator”调用上。

时代的例子是

71.55% CreateTableFromReportDataColumns - 18, 533* ms - 190 calls
-- 55.71% MoveNext - 14,422ms - 10,775 calls

我可以做些什么来加快这个方法吗?它被调用了很多次,秒数加起来:

    private static DataTable CreateTableFromReportDataColumns(Report report)
{
DataTable table = new DataTable();
HashSet<String> colsToAdd = new HashSet<String> { "DataStream" };
foreach (ReportData reportData in report.ReportDatas)
{
IEnumerable<string> cols = reportData.ReportDataColumns.Where(c => !String.IsNullOrEmpty(c.Name)).Select(x => x.Name).Distinct();

foreach (var s in cols)
{
if (!String.IsNullOrEmpty(s))
colsToAdd.Add(s);
}
}

foreach (string col in colsToAdd)
{
table.Columns.Add(col);
}

return table;
}

如果您需要此处的 sql 表定义,它们是:

报表数据

ReportID            int

ReportDataColumn

ReportDataColumnId  int
ReportDataId int
Name varchar(255)
Value text

最佳答案

我相信你应该能够将你的功能简化成这样的东西

var columnsToAdd = report.ReportDatas
.SelectMany(r => r.ReportDataColumns)
.Select(rdc => rdc.Name)
.Distinct()
.Where(name => !string.IsNullOrEmpty(name));

然后从那里将名称添加到您的表中。

关于c# - 重构 - 速度提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2968857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com