2013-07-02 7 views
0

이 구문 중 어느 것이 더 우수한 성능과 속도로 데이터를 검색합니까?이 구문 중 어느 것이 더 나은 성능을 갖고 있습니까?

첫 번째 대안 :

this.Message = pageContentsli 
    .Where(m => m.PName == "Message") 
    .First() 
    .ContentValue; 

두 번째 대안 :

foreach (PageContentsModel pc in pageContentsli) 
    { 
    if (pc.PName == "Message"){ 
     this.Message = pc.ContentValue; 
     break; 
     } 
    } 
+1

실제 성능 문제가 있습니까? –

+6

http://ericlippert.com/2012/12/17/performance-rant/ _ 두 마리가 있고 두 마리 중 어느 것이 더 빠른지를 알고 싶다면 ** 말을 경주하십시오 ** ** –

+0

어떤 데이터가 검색 속도가 더 빠른지 알 수 있습니다. – motevalizadeh

답변

2

비교를 계속하기 전에 다음과 같이 First 내부의 상태를 이동해야합니다 :

this.Message = pageContentsli.First(m => m.PName == "Message").ContentValue; 

를 아득히 성능은 간다. 아무런 차이가 없어야한다. 그러나 읽기 쉽도록 수정 된 LINQ 버전이 적용됩니다.

+0

미안 해요 편집하고 내 루프에 휴식을 넣어 – motevalizadeh

+0

@motevallizadeh 아무 문제가 - 나는 관련이없는 부분을 제거하는 대답을 편집. – dasblinkenlight

+0

먼저 더 빠르다는 뜻입니까? – motevalizadeh

0

먼저 두 구문이 실제로 무엇을하는지 설명하겠습니다. 구 (where)에서

, 상기 소자를 하나씩 처리하고 m.PName="Message" 잡는 경우 this.Message 상기 요청 된 값을 반환하고 그 처리를 정지한다. 구 (foreach)에서

, 상기 소자를 하나씩 처리하고 m.PName="Message" 잡는 때 this.Message에 값을 할당하고, 다시 그 요소의 나머지의 처리를 개시한다.

그래서 값을 찾을 수 있는데도의 구문은 멈추지 않는다 그래서는 처음 구문보다 완료하는 데 시간이 더 걸립니다.

관련 문제