나는 ~ ~ I 루프 을 통해 그때 추가의 튜플의 목록에 LINQ 필요가 137,000 레코드를 포함 entites의 목록을 가지고 150000Linq에 - 투 - 객체는
왜 더 오래 걸리면 더 반복됩니까? 다음은 스톱워치에서 나온 것입니다. 발견 : 136770 개 항목이 기준에 부합합니다.
10,000 개의 항목이 처리되었습니다. EllapsedTime : 5473That : 0.0912166666666667 minutes.
20,000 개의 항목이 처리되었습니다. EllapsedTime : 15307That : 0.255116666666667 minutes.
30,000 개의 항목이 처리되었습니다. EllapsedTime : 30065That : 0.501083333333333 분.
50,000 개의 항목이 처리되었습니다. EllapsedTime : 74507Th : 1.24178333333333 분.
75,000 개의 항목이 처리되었습니다. EllapsedTime : 157836 : 2.6306 분.
100,000 건이 처리되었습니다. EllapsedTime : 272495Tun : 4.54158333333333 분.
EllapsedTime : 499663 즉 : 8.32771666666667 분입니다.
이것을 최적화 할 수있는 방법이 있습니까? 이 코드에서
List<Entites> alMatched
List<Tuple<int, double, int, int>> lsItems = new List<Tuple<int, double, int, int>>();
IEnumerable<Tuple<int, double, int, int>> enumThingy = lsItems;
for (int z = 0; z <= alMatched.Count() - 1;z++)
{
Entity a = alMatched[z];
var newRepl = enumThingy.Where(d => d.First == a.ID).First();
if (newRepl != null)
{
}
switch (z)
{
case 10000:
Debug.Print("10,000 items processed " + ElapsedTime(sw.ElapsedMilliseconds));
break;
case 20000:
Debug.Print("20,000 items processed " + ElapsedTime(sw.ElapsedMilliseconds));
break;
case 30000:
Debug.Print("30,000 items processed " + ElapsedTime(sw.ElapsedMilliseconds));
break;
case 50000:
Debug.Print("50,000 items processed " + ElapsedTime(sw.ElapsedMilliseconds));
break;
case 75000:
Debug.Print("75,000 items processed " + ElapsedTime(sw.ElapsedMilliseconds));
break;
case 100000:
Debug.Print("100,000 items processed " + ElapsedTime(sw.ElapsedMilliseconds));
break;
}
}
감사
_Eric
귀하의 항목이있는 체인에 나중에 더 많은 시간이 걸립니다 (또는 전혀없는) 것 "Big O notation"을 읽어야합니다. 그 점을 이해하면 이러한 종류의 분석 결과를 해석하는 방법을 이해하는 데 도움이됩니다. 큰 O 표기법을 이해하면 문제의 크기를 처리 할 수있는 적절한 데이터 구조를 선택할 수 있습니다. –