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

... 46  47  [48]  49  50  51  52  53  54  55  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
3671이상준12/22/201524435한글 키보드 입력에 대해서 질문이 있습니다. [3]
3670Sung...12/18/201519864UWP 주기적으로 신호를 보내고 클라이언트에서 신호가 오면 받는 프로그램을 하려고 합니다. [5]
3669다비드12/18/201518823인터넷 임시파일 삭제 관련 질문. [1]
3668김치사발면12/16/201518232템플릿이 자꾸 초기화? 되버리네요 [1]
3667김치사발면12/15/201517818템플릿 설정 추가 질문 [1]파일 다운로드1
3666노태현12/15/201517144사용자별로 권한을 주고 볼 수 있는 데이터를 제한하려면 어떤 방법으로 접근하는게 좋을까요? [2]
3665김치사발면12/14/201520457C# 템플릿 설정이 이상해요ㅜㅜ [3]파일 다운로드1
3664KuLu12/10/201517214멀정하던 사이트 중 일부메뉴가 응답없음이 되어버립니다. [3]
3663Sung...12/10/201519120UWP 서버 프로그래밍 작업 중 [5]
3662Sung...12/9/201518808uwp앱에서 접속한 클라이언트 주소값을 받아서 표시하고 싶은데 어떤 메소드를 써야 할까요? [7]
3661김무진12/9/201518568Oracle 환경에서 데이터를 조회할때 한글이 ? 이렇게 표시가됩니다. [1]
3660질문자12/7/201520680OpenFileDialog 호출시 hang걸리는 문제 [4]
3659Sung...12/4/201520481UWP 앱에서 textBox로 클라에서 받은 값을 나타내고 싶은데 안되고 있습니다. [5]
3658강준12/3/201519267Visual Studio (Xamarin) vs Eclipse [2]
3656DEVY...12/1/201518938MasterPageFile 사용시 다국어 처리 질문입니다. [1]
3653DEVY...11/26/201520783ds:Signature 질문입니다. [7]
3654윤용한11/27/201520810    답변글 [답변]: ds:Signature 질문입니다. [3]
3657윤용한12/1/201522341    답변글 [답변]: ds:Signature 질문입니다. [1]
3651노태현11/20/201553302MariaDB - ASP.NET오류의 원인조차 못 찾고 있습니다.. [2]파일 다운로드2
3652노태현11/20/201520688    답변글 [답변]: MariaDB - ASP.NET오류의 원인조차 못 찾고 있습니다.. [3]
3649kokon11/17/201520129예제 파일 실행이 안 되네요 [5]
3647Sang...11/15/201518160Part 3 목차? [5]
3646힘찬도약11/13/201523706c# mscorlib System.IO IOException [8]파일 다운로드2
3644힘찬도약11/11/201522569c# user.config파일 [2]
3645spow...11/13/201519098    답변글 [답변]: c# user.config파일 - Json.NET을 이용한 설정파일 처리 [1]파일 다운로드1
3643힘찬도약11/11/201520691C# 함수의 processing time과 재호출 [14]
... 46  47  [48]  49  50  51  52  53  54  55  56  57  58  59  60  ...