
강사님 강의 잘 봤습니다. "reduce 하나 보다 map + filter + reduce" 관련해서 질문드릴게 있어서요.
함수형 개발 기법 중에 transducer라는 게 있는 걸로 알고 있습니다. 어느정도 개념만 알고 있어서 이와 관련해서 질문 좀 드리려고 합니다.
transducer 관련한 글을 보면 map, filter, reduce 등을 여러번 쓰는 것보다 reduce protocol을 따르는 map, filter등을 사용해서 compose(pipe)등으로
합성해서 사용하는게 많은 데이터를 다룰때 효율적이다라고 알고 있습니다(실제로 ramdajs, rxjs 등이 이러한 기법으로 만들어진걸로 알고 있구요).
강사님은 대용량 데이터를 다뤄야 할때도 reduce 하나 보다 map + filter + reduce 이렇게 사용을 하시나요?
map + filter + reduce를 사용 하는 데 퍼포먼스 상 굳이 신경쓸 정도의 손해는 없는지 다른 의견이 있으신지 궁금합니다.
감사합니다.
말씀주신 transducer 스타일의 해법들 같은 경우 큰 array를 map, filter, reduce를 거치면서 여러번 만드는거보다 표현은 map filter 를 가져가되 큰 array를 한 번도 만들지 않고자하는 컨셉이고 큰 array를 다룰 때 유리한게 맞습니다.
그런데 map, filter가 지연성을 갖도록 만든다면 역시 한 번도 큰 array를 만들지 않아 완전히 동일한 효율을 갖게됩니다. 그러므로 영상처럼 제너레이터로만든 L.map + L.filter + reduce 를 사용하게 되면 transducer 스타일과 완전히 동일한 효율이므로 더 손해가 있거나 하지 않습니다.
내부적으로 사실상 transducer 와 동일한 흐름과 순서로 코드가 실행되고 동일한 로직이 됩니다.
결과적으로 L.map + L.filter + reduce이 표현력도 훨씬 쉽고 이해하기도 쉬우면서 동일한 효율입니다.
감사합니다 :)