Microsoft MVP성태의 닷넷 이야기
IEnumerable 의 "지연된 평가" 에 관하여 질문드립니다. [링크 복사], [링크+제목 복사],
조회: 14569
글쓴 사람
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]

... 61  62  63  64  65  [66]  67  68  69  70  71  72  73  74  75  ...
NoWriterDateCnt.TitleFile(s)
950이성환2/9/201119185Windows application 프로젝트를 참조 했을 때 생성되는 실행파일을 직접 실행 불가능하도록 하고 싶습니다. [6]파일 다운로드1
947김순조1/24/201118889.NET based Com에서 Native ActiveX로 이벤트 보내기?? [2]파일 다운로드1
943김기룡1/3/201121931닷넷 에러시 조치사항관련... [2]
942김기룡12/27/201016910Thread 안정성 관련 문의 드립니다. [2]
941최광욱12/20/201016691정성태님 올리신 글중에 [1]
940최광욱12/20/201018478Assembly Unloading 관련해서 [2]
939최광욱12/20/201017101IIS 로그 읽기 [1]
938날쌘돌이12/14/201017799자바로 asp.net 인증하기 [3]
935김기룡12/13/201028197c#에서 c++로 개발된 dll에 byte[] 전달 관련하여 문의 드립니다. [6]
934임동찬12/7/201015702System.Reflection.Assembly.GetTypes() 메서드에 대해 [1]
929김준호12/2/201015907안녕하세요 비주얼베이직 2005 닷넷 관련 문의입니다 [1]
928김준호11/30/201016460안녕하세요 비주얼베이직 2005 닷넷 관련 문의입니다 [1]파일 다운로드1
927임동찬11/30/201017835Windows\\Temp 폴더의 이름모를 .tmp 파일들에 대해서 [1]
926이승규11/26/201037773IP접속 시도시 ORA-12504 에러 [1]
925임동찬11/11/201015344다른 프로그램의 컨트롤 건드려보기_추가질문(2) [1]
924임동찬11/10/201016150다른 프로그램의 컨트롤 건드려보기_추가질문 [1]
923임동찬11/9/201018681다른 프로그램의 컨트롤 건드려보기 [1]
922박태근11/2/201017305html5의 shape파일 관련 [1]파일 다운로드1
921박태근11/1/201018064DataTable 의 Binary변환! [1]
920김재영10/26/201018256GAC에 등록된 어셈블리를 Visual Studio에서 참조 대화상자에 보이게 할려면 어떤 방법이 있습니까? [2]
919임동찬10/22/201016649IStream [1]
918임동찬10/21/201015881System.Runtime.InteropServices.ComTypes.IStream 관련 [1]
917한귀순10/20/201020100IIS 최초 loading 시 속도 [2]
916임동찬10/15/201016363file lock 관련 [2]
915오병태10/11/201015184바쁘신대 답변 감사드립니다. [1]
914오병태10/11/201015323감사드립니다. 염치없지만 또 한번 문의드립니다. [2]
... 61  62  63  64  65  [66]  67  68  69  70  71  72  73  74  75  ...