다음을 통해 공유


지연된 실행 및 지연 평가(LINQ to XML)

쿼리 및 축 작업은 지연된 실행을 사용하기 위해 구현되는 경우가 많습니다. 이 문서에서는 지연된 실행의 요구 사항과 이점 및 몇 가지 구현 고려 사항을 설명합니다.

지연된 실행

지연된 실행은 식의 평가가 구체화된 값이 실제로 필요할 때까지 지연된다는 의미입니다. 지연된 실행은 특히 일련의 연결된 쿼리 또는 조작이 포함된 프로그램에서 큰 데이터 컬렉션을 조작해야 하는 경우 성능을 크게 향상시킬 수 있습니다. 가장 좋은 경우, 지연 실행 방식으로 원본 컬렉션을 통해 단일 반복만 수행하게 합니다.

LINQ 기술은 핵심 System.Linq 클래스의 멤버와 다양한 LINQ 네임스페이 System.Xml.Linq.Extensions스의 확장 메서드 모두에서 지연된 실행을 광범위하게 사용합니다.

지연 실행은 반복기 블록 내에서 사용될 때 yield(C# 참조) 키워드(문 형식 yield-return )에 의해 C# 언어로 직접 지원됩니다. 이러한 반복기는 IEnumerator 형식 또는 IEnumerator<T> (또는 파생 형식)의 컬렉션을 반환해야 합니다.

즉시 평가와 지연 평가

지연된 실행을 구현하는 메서드를 작성할 때 지연 평가 또는 즉시 평가를 사용하여 메서드를 구현할지 여부를 결정해야 합니다.

  • 지연 평가에서는 반복기를 호출할 때마다 원본 컬렉션의 단일 요소가 처리됩니다. 반복기가 구현되는 일반적인 방법입니다.
  • 즉시 평가에서 반복기의 첫 번째 호출은 전체 컬렉션이 처리되는 결과를 낳습니다. 원본 컬렉션의 임시 복사본도 필요할 수 있습니다. 예를 들어 메서드는 OrderBy 첫 번째 요소를 반환하기 전에 전체 컬렉션을 정렬해야 합니다.

지연 평가는 일반적으로 컬렉션 평가 전체에서 오버헤드 처리를 균등하게 분산하고 임시 데이터의 사용을 최소화하기 때문에 성능이 향상됩니다. 물론 일부 작업의 경우 중간 결과를 구체화하는 것 외에는 다른 옵션이 없습니다.

C# 및 Visual Basic에서 지연된 실행을 프로그래밍하는 예제는 지연 실행 예제 를 참조하세요.

참고하십시오