【发布时间】:2015-12-04 23:03:05
【问题描述】:
我有这个包含数百万行的scheduler.PageResults 代码。
var AllNonHTMLPages = scheduler.PageResults
.Where(p => (p.SkipReason & SkipReasonEnum.NoHTML) == SkipReasonEnum.NoHTML);
Console.WriteLine("# All Non HTML Pages: {0}", AllNonHTMLPages.Count());
foreach (PageData page in AllNonHTMLPages) { Console.WriteLine("Non HTML Page: {0}", page.Url); }
foreach (PageData page in scheduler.PageResults
.Where(p => p.SkipReason.IsFlagSet(SkipReasonEnum.None))
.OrderByDescending(p => p.IndexPath.Length))
{
.....
}
- 避免使用 LINQ。
- 避免在编译器热路径中分配:
- 避免对没有结构枚举器的集合使用 foreach。 考虑使用对象池。编译器中有很多对象池的用法,看一个例子。
我知道 LINQ 很慢。在没有 Linq API 的情况下进行优化的一些想法?
【问题讨论】:
-
“我知道 LINQ 很慢” - Roslyn 团队并不是建议没有人使用 LINQ,只是它在 Roslyn 中不合适。不幸的是,我们几乎不知道您看到了什么性能,或者
scheduler.PageResults来自哪里......您需要向我们提供更多信息。
标签: c# performance linq