>백엔드 개발 >C++ >LINQ 확장 메서드(예: Where 및 FirstOrDefault)의 순서가 성능에 영향을 줍니까?

LINQ 확장 메서드(예: Where 및 FirstOrDefault)의 순서가 성능에 영향을 줍니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-11 10:10:41440검색

Does the Order of LINQ Extension Methods (e.g., Where and FirstOrDefault) Impact Performance?

LINQ 확장 방법 순서

질문 출처: LINQ 확장 메서드의 순서가 성능에 영향을 미치나요?

질문:

LINQ 확장 메서드의 순서가 성능에 큰 영향을 미치지 않는 이유는 무엇입니까? 예를 들어, 다음 두 명령문을 비교하면 Where 다음에 FirstOrDefault가 오는 것이 FirstOrDefault 다음에 Where이 오는 것보다 느리다고 생각할 수 있습니다.

<code class="language-csharp">hugeList.Where(x => x.Text.Contains("10000")).FirstOrDefault();

hugeList.FirstOrDefault(x => x.Text.Contains("10000"));</code>

정답:

다음에 Where가 느려질 것이라는 가정은 잘못된 것입니다. FirstOrDefault 첫 번째 일치 항목을 얻기 전에 모든 일치 항목을 찾을 필요는 없습니다. 요청 시 일치 항목을 검색합니다. 즉, 첫 번째 일치 항목만 필요한 경우 첫 번째 일치 항목을 찾은 후 중지됩니다. Where

이를 설명하기 위해 다음 시나리오를 상상해 보세요.

3명이 참여했습니다:

    A는 섞인 카드 한 벌을 들고 있습니다.
  • B는 '카드가 빨간색이면'이라고 적힌 셔츠를 입고 있습니다.
  • C가 B에게 "첫 번째 카드를 주세요."라고 말했습니다.
B는 A가 레드 카드를 제공할 때까지 A에게 반복적으로 카드를 요청합니다. 첫 번째 레드 카드를 획득하면 C에게 전달되고 프로세스가 종료됩니다. B는 첫 번째 레드 카드를 찾은 후에 A에게 카드를 계속 요청할 필요가 없습니다.

마찬가지로 LINQ 문에서

는 B와 마찬가지로 카드(목록의 항목)를 필터링하여 첫 번째 일치 항목을 찾습니다. 첫 번째 일치 항목을 반환하기 전에 모든 일치 항목을 찾을 필요는 없습니다. Where

반면, 확장 방법의 순서가 반대인

다음에 FirstOrDefault이 오는 경우에는 상황이 달라집니다. Where는 첫 번째 항목을 검색해야 하며, FirstOrDefault은 필터를 적용해야 하며, 여기에는 모든 항목을 반복하는 작업이 포함됩니다. 이는 Where 다음에 Where을 사용하는 것보다 효율성이 떨어집니다. FirstOrDefault

따라서 LINQ 확장 방법의 성능 영향을 결정할 때 적용되는 순서를 고려하는 것이 중요합니다. 사용되는 특정 방법에 따라 작업 효율성에 영향을 미치기 때문입니다.

위 내용은 LINQ 확장 메서드(예: Where 및 FirstOrDefault)의 순서가 성능에 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.