我試圖從SharePoint 2010中檢索同義詞,並且我的代碼存在以下問題:它通過沒有索引器的keywordCollection
循環。做一個foreach
需要很長的時間,因爲實例化一個新的關鍵字持續大約5-10ms,到目前爲止有大約8000個關鍵字,大約需要80秒才能完成。 事情,我試過到目前爲止:foreach循環在SharePoint 2010中花費太長時間
獲得枚舉 - >需要80秒以及
投集合到一個列表 - >失敗的原因未知。
代碼示例:
KeywordContext keywordContext = fastProxy.KeywordContext;
SearchSettingGroupCollection searchSettingGroupCollection = keywordContext.SearchSettingGroups;
foreach (SearchSettingGroup searchSettingGroup in searchSettingGroupCollection)
{
if (searchSettingGroup.Name == siteId.ToString())
{
foreach (Keyword keyword in searchSettingGroup.Keywords)
{
//the rest of the work here, per total takes about 470ms
}
}
}
有通過不使用foreach
語句的集合,其中一個新的object<T>
每次實例化的方式來循環?
謝謝!此外
using (var site = new SPSite(siteCollectionUrl))
{
// get the site ID
var guid = site.ID.ToString();
// code to get the fastProxy FASTAdminProxy
KeywordContext keywordContext = fastProxy.KeywordContext;
var ssgs = keywordContext.SearchSettingGroups;
if (ssgs.ContainsSearchSettingGroup(guid))
{
var searchSettingGroup = ssgs.GetSearchSettingGroup(guid);
foreach (var keyWord in searchSettingGroup.Keywords)
{
// do stuff with keyWord.Synonyms
}
}
}
,雖然我不能在此刻測試它,你可以嘗試使用Parallel
類:
「'//工作的休息這裏'「<----這是最相關的部分。你在循環中做什麼?如何讓索引器幫助你? – dasblinkenlight 2013-02-14 11:33:30
//工作的其餘部分 - >只是一些字符串操作,每80秒總共需要470毫秒。問題是,每當foreach實例化一個新的只讀關鍵字,它需要10ms這是我的問題。 – 2013-02-14 12:07:48
所以它不像你可以跳過大部分關鍵字,對吧?即它看起來像你的代碼需要訪問集合中的每個關鍵字,是否正確? – dasblinkenlight 2013-02-14 12:10:24