번호 :Parallel.ForEach 함수에서 실행 시간을 줄이는 방법은 무엇입니까?
Parallel.ForEach(
infoMap,
map =>
{
var workItem = map.WorkItem;
var parentInViews = viewMaps;
var workbenchItem = map.WorkbenchItem;
string LinkType = string.Empty;
WorkItemLinkCollection linkedWorkItems = workItem.WorkItemLinkHistory;
if (linkedWorkItems != null && linkedWorkItems.Count > 0)
LinkType = linkedWorkItems[0].LinkTypeEnd.LinkType.ReferenceName;
else if (workItem != null)
LinkType = workItem.Store.WorkItemLinkTypes.LinkTypeEnds["Parent"].LinkType.ReferenceName;
if (!string.IsNullOrEmpty(LinkType))
{
var viewMap = parentInViews.FirstOrDefault();
if (viewMap != null)
{
var linkName = LinkType;
var childType = viewMap.ChildType;
ILinkItem itm = Factory.BuildLinkItem(linkName, workbenchItem, workbenchItem);
lock (Addparents)
{
Addparents.Add(itm);
}
}
}
});
Factory.BuildLinkItem
정의 :
public static ILinkItem BuildLinkItem(string linkName, IWorkbenchItem parent, IWorkbenchItem child)
{
return new LinkItem { LinkName = linkName ?? string.Empty, Child = child, Parent = parent };
}
658 items
는 모두가 존재하고, 상기 기능을 실행
Parallel.ForEach
거의
10초 걸린다.
실행 시간을 줄일 수 있습니까? 그렇다면 해결책을 제안하십시오. 감사.
주는 : 어떤 다른 방법은 성능을 향상시키고 또한 실행 시간을 줄일 수있는 경우는 별도로 Parallel.ForEach
에서, 제안하십시오. 감사.
당신이 당신의 코드를 프로파일 링과 시간이 소요되는 경우보고 시도? –
설치 권한이 없으므로 코드를 프로파일 링하지 않았습니다. –
왜'Addparents.Add (itm)'을하고 있습니까? '.ToList()'로 병렬 선택을하면 목록에 항목을 넣을 수없는 이유는 무엇입니까? – Enigmativity