Microsoft MVP성태의 닷넷 이야기
IEnumerable 의 "지연된 평가" 에 관하여 질문드립니다. [링크 복사], [링크+제목 복사],
조회: 16460
글쓴 사람
Question
홈페이지
첨부 파일

안녕하세요. 또 질문드리게 되네요.. ^^

제가 C# 6.0 책을 보던 중 이 부분이 궁금하여 테스트를 진행해봤습니다.

그런데 FindAll 은 모든 요소를 대상으로 실행된다고 되어있고,

Where 은 열거자를 통해 요소를 순회할 때 하나씩 실행 된다고 되어있습니다. 그리고 이를 "지연된 평가" 라고 하고요.

또한 Where 의 장점이 데이터가 필요한 순간에만 코드가 CPU 에 의해 실행된다고 되어있습니다.

FindAll 은 데이터가 몇 개만 필요해도 필요한게 모두 끝날 때까지 CPU 가 실행되구요.

그렇다는 것은 Where 이 속도가 더 빨라야한다는 뜻인데..

어째서 인지 FindAll 이 아무리 돌려봐도 더 빠릅니다.

어떻게 된 영문인지 몰라 질문드립니다.

테스트 할 때 썻던 프로젝트는 첨부하였습니다.








[최초 등록일: ]
[최종 수정일: 11/19/2017]


비밀번호

댓글 작성자
 



2017-11-19 03시47분
대개의 경우 지연 평가가 더 느립니다. 지연 평가를 구현하기 위해 부가적인 코드가 더 수반되는데요, 그 부분이 오버헤드로 작용합니다. FindAll과 Where로 각각 구현한 코드를 .NET Reflector와 같은 역어셈블 도구로 확인해 보면 차이를 눈으로 확인할 수 있습니다.

지연된 평가는 필요한 순간까지 코드 실행을 미룬다는 것일 뿐 가장 빠르게 동작하는 코드를 생성하는 것은 아닙니다.
정성태
2017-11-20 03시48분
[Question] 아하 그렇군요. 감사합니다.
[guest]

... 16  17  18  19  20  [21]  22  23  24  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
5440한예지 donator1/1/202115178추상클래스로와 new [4]
5439이상호12/31/202019429VC 프로젝트 에서 _main 함수에서 참조되는 확인할 수 없는 외부 기호 [4]파일 다운로드1
5438김윤12/29/202021568C# winform using으로인한 메모리 해제 타이밍과 변수 복사 타이밍 [2]
5437한예지 donator12/25/202017837for문 안에 있는 지역변수의 생성 및 유지 기간에 대해 질문드립니다! [6]
5436영귤12/24/202015736fixed는 자동으로 stackalloc이 되는 건가요? [1]
5435한예지 donator12/24/202016253ArraySegment, Span, ReadOnlySpan 질문있습니다! [1]
5434한예지 donator12/23/202016993ToString 재정의 질문있습니다! [8]
5433한예지 donator12/23/202017459List<ArrarySegment<int>> 사용법 질문드립니다! [2]
5431한예지 donator12/17/202018354비동기 소켓 서버 질문 드립니다! [1]
5430종범12/16/202017473[WPF] Task 관련 재질문 드립니다. [2]파일 다운로드1
5429종범12/16/202018442[WPF] Task 관련 질문 드립니다. [1]파일 다운로드1
5428최선호 donator12/14/202018183성태님 ㅠ.ㅠ 소켓 서버 작동이 이상합니다 ㅠ.ㅜ [1]파일 다운로드1
542712/11/202018894LPBOOL Win32 마샬링 질문이 있습니다. [6]
5426하태12/11/202015765안녕하세요 정성태님! C# winform Calendar 컨트롤 질문 드리겠습니다!. [1]
5425정유경12/10/202016285[왕초보] (4) [1]
5423정유경12/8/202016234[왕초보] (3) [2]
5422이승준12/7/202022324VisualStudio 2019의 인텔리센스가 느려지는 경우가 있나요? [4]
5421정유경12/6/202017995[왕초보] (2) [4]
5420정유경12/5/202018884[왕초보] 랜덤 숫자와 배열에 관한 질문 [1]
5419종범12/4/202018989[WPF] Threadpool사용 시 크리티컬 섹션 대응 질문 입니다. [4]
5418한예지 donator11/27/202018977클래스, 인터페이스 크기를 구하고 싶은데 어떻게 해야 될까요? [1]
5417한예지 donator11/27/202016284인터페이스와 추상클래스에 대해 궁금증이 있습니다. [1]
5416한예지 donator11/27/202016360Object 질문 있어요. [1]
5415한예지 donator11/25/202015958교재 213쪽 예제 4.25 질문드립니다. [1]
5414한예지 donator11/23/202017570제네릭 리스트 출력하는 방법이 궁금합니다. [1]
5413민석11/20/202019100C# minidump를 프로그램이 중단 될 때 만들고 싶습니다. [1]파일 다운로드2
... 16  17  18  19  20  [21]  22  23  24  25  26  27  28  29  30  ...