다음 코드를 실행하는 데 시간이 오래 걸립니다. 성능을 향상시키기 위해 LINQ 또는 다른 방법으로 코드 아래를 대체 할 수있는 대안이 있습니까?중첩 된 foreach를 성능 향상으로 바꾸십시오.
var usedLists = new HashSet<long>();
foreach (var test in Tests)
{
var requiredLists = this.GetLists(test.test, selectedTag);
foreach (var List in requiredLists)
{
if (!usedLists.Contains(List.Id))
{
usedLists.Add(List.Id);
var toRecipients = List.RecepientsTo;
var ccRecipients = List.RecipientsCC;
var bccRecipients = List.RecipientsBCC;
var replyTo = new List<string>() { List.ReplyTo };
var mailMode = isPreviewMode ? MailMode.Display : MailMode.Drafts;
OutlookModel.Instance.CreateEmail(toRecipients, ccRecipients, bccRecipients, this.Draft, mailMode, replyTo);
}
}
}
필자는 linq을 사용하면 더 빨리 처리 할 수 있을지 의심 스럽다. 그리고 나는'CreateEmail' 함수가 항상 사용되는 것으로 생각한다. 코드를 프로파일 링하고 실제 병목 현상이 어디인지 확인하십시오. http://stackoverflow.com/questions/3927/what-are-some-good-net-profilers – Stormenet
아니, 기본적으로 최선이 될 수 있습니다. – TheGeekZn
'this.GetLists' 메소드는 어떻습니까? 이 두 가지 방법을 제외하고는이 코드에서 그다지 소모하지 않을 것이 없습니다. 또는 그룹화 된 메일을 한 번에 보낼 수도 있습니다 (동일한 초안을 항상 보냈기 때문에)해야 할 일에 반대하지 않는 경우 한 번에 보낼 수 있습니다. – mmg666