2012-08-10 93 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(); 

時間這一點,你應該看到的是,昂貴的呼叫時,它的真實的檢索數據,並且不添加到列表中。