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

... 91  92  93  [94]  95  96  97 
NoWriterDateCnt.TitleFile(s)
119김용국3/22/20059818                    답변글 [답변]: 정상태님 아주 잘 해결 되었습니다.... 감사합니다!
108guest3/17/200510000닷넷 프레임워크 배포
111정성태3/19/200510435    답변글 [답변]: 닷넷 프레임워크 배포
107안연준3/17/20059615[-_-]스마트 클라이언트에 관련 된 질문[-_-]
110정성태3/19/200510511    답변글 [답변]: [-_-]스마트 클라이언트에 관련 된 질문[-_-]
116안연준3/21/200510003        답변글 [답변]: 친절한 답변 고맙습니다.
98김용국3/18/200511741정성태님... 연결이 준비됬습니다
99정성태3/2/200512596    답변글 [답변]: 정성태님... 연결이 준비됬습니다
100김용국3/18/20059717        답변글 [답변]: 죄송합니다! 급히올리느라 file path의 변경을 하지않고 그냥올렸네요....!
101정성태3/2/20059956            답변글 [답변]: [답변]: 죄송합니다! 급히올리느라 file path의 변경을 하지않고 그냥올렸네요....!
102김용국3/18/200510008                답변글 [답변]: 거듭죄송하네요..... 후~~~주소를 변경하고 빌드를 다시 했습니다....
103정성태3/2/20059915                    답변글 [답변]: [답변]: 거듭죄송하네요..... 후~~~주소를 변경하고 빌드를 다시 했습니다....
104김용국3/2/200510017                        답변글 [답변]: 네... 빨리 검토해 봐 주셔서 감사합니다~~
105정성태3/2/20059208                            답변글 [답변]: [답변]: 네... 빨리 검토해 봐 주셔서 감사합니다~~
106김용국3/2/20059688                                답변글 [답변]: 답변감사합니다!
91김용국2/28/200511347IE에 WindowsFormControl을 올려 실행하면 이런에러가 나네요???파일 다운로드1
92정성태2/28/200512649    답변글 [답변]: IE에 WindowsFormControl을 올려 실행하면 이런에러가 나네요???
93김용국2/28/200511617        답변글 [답변]: 답변감사합니다... 재질문을 드립니다
94정성태2/28/200512223            답변글 [답변]: [답변]: 답변감사합니다... 재질문을 드립니다
95김용국2/28/200512258                답변글 [답변]: IE주소창에서 해당주소로 실행을 해보니....디버깅 PopUp화면이...^
96정성태2/28/200511292                    답변글 [답변]: [답변]: IE주소창에서 해당주소로 실행을 해보니....디버깅 PopUp화면이...^
97김용국3/1/200511864                        답변글 [답변]: 준비되는데로 말씀드리겠습니다 ^^
88안지환2/22/200513353^^ 사이트 잘 들러보았습니다.
89정성태2/22/200513349    답변글 [답변]: ^^ 사이트 잘 들러보았습니다.
85한기열2/22/200511988정성태님 홈같은 부드러운 페이지 넘김?은 어떻게 구현하나요?
86정성태2/22/200512687    답변글 [답변]: 정성태님 홈같은 부드러운 페이지 넘김?은 어떻게 구현하나요? [2]
... 91  92  93  [94]  95  96  97