首页 / C# / c# – 重构 – 速度提升
c# – 重构 – 速度提升
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 重构 – 速度提升,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1272字,纯文字阅读大概需要2分钟。
内容图文
如何使此功能更有效.它目前运行在6 – 45秒.
我已经在这个特定方法上运行了dotTrace探查器,它的总时间在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表定义,他们是:
ReportData
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# – 重构 – 速度提升全部内容,希望文章能够帮你解决c# – 重构 – 速度提升所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。