2012-08-10 94 views
1

我有以下代码:List.Add性能问题

foreach(Icon item in iconObjects) 
{ 
    iconList.Add(item.iconID); //iconID is a GUID string 
} 

我发现197个记录。它需要约10秒钟来执行循环并填充列表。任何关于改善表现的想法?

我已经试过:

iconList.AddRange(iconObjects.Select(y=> y.iconID)) 

但它需要的时间是相同的。

感谢, 里克

+0

这些字符串有多大?你是否遇到堆L​​OH碎片?使用一个分析器和/或运行一些简单的测试(例如,尝试添加197'int's,看看有什么不同。猜测是浪费时间。 – 2012-08-10 00:31:32

+0

@EdS。“GUID strings”,所以它们应该小于100个字符 – delnan 2012-08-10 00:32:17

+0

@delnan:我什么也不假:)。具体而言,我不假定每个使用“GUID”这个术语的人都正确使用它。 – 2012-08-10 00:38:19

回答

1

添加到List不应该采取长197项。最有可能它需要这么长时间,因为iconObjects是一个iQueryable或iEnumerable。

为什么不做一个

var iconList = iconObjects.ToList(); 

时间这一点,你应该看到的是,昂贵的呼叫时,它的真实的检索数据,并且不添加到列表中。