2011-12-25 2 views

답변

11

들었습니까?
for 루프는 foreach 루프보다 훨씬 빠릅니다.
사실 일부 컬렉션의 경우 foreach 루프는 for 루프보다 훨씬 빠릅니다.

ToList() 중 어느 것보다 느립니다.

코드를 빠르게 만들고 싶다면 O (n) LINQ 조인을 O (n) Single() 호출 대신 사용해야합니다.

+0

'foreach loop'는 언제 더 빨라지 며 'for loop'는 언제 더 빠릅니까? – gdoron

+0

@gdoron : 연결된리스트를'IList '로 사용할 때. – SLaks

+0

이유를 설명하거나 링크를 제공해주십시오. – gdoron

0
for (int i = 0; i < gridview.SelectedItems.Count(); i++) 
{ 
    R req = db.Requests.Single(x => x.ID == (gridview.SelectedItems(i) as RV).Id); 
    ... 
} 

성능 향상이 눈에 띄지는 않을 것입니다.

+3

'Count()'에서 (측정 할 수없는) 성능 손실이있을 것입니다. – SLaks

+0

실제로있을 것입니다 :( – Martin

0

어쨌든 foreach를 사용하여 열거하는 경우 선택한 항목을 목록으로 변환 할 필요가 없습니다. 또한 for 루프는 내부적으로 foreach를 사용하는 ToList를 호출해야합니다!

o/r-mapper가 Contains을 처리 할 수 ​​있는지 잘 모르겠습니다. 시도 할 경우 :

var items = db.Requests.Where(x => gridview.SelectedItems.Contains(x.Id)); 

이렇게하면 데이터베이스 요청 수가 줄어 듭니다. 이것은 foreach가 아닌 시간이 손실되는 곳입니다!

관련 문제