병렬 연산을 사용해 텍스트에서 문자의 빈도를 세어요.
병렬성이란 순차적으로도 할 수 있는 일을 병렬로 처리하는 것을 말해요. 흔한 예시가 바로 문자의 빈도를 세는 거예요. 병렬성을 활용해 여러 텍스트로 이루어진 목록에서 각 문자의 전체 빈도를 계산해요.
코드에는 병렬로 사용할 워커 수와 텍스트 목록을 받아, 텍스트에서 각 문자의 총 빈도를 반환하는 frequency :: Int -> [Text] -> Map Char Int 함수가 있어야 해요.
벤치마크를 실행해서 워커 수를 바꾸면 솔루션의 성능이 어떻게 달라지는지 확인해 봐요. 실행하려면 stack bench를 사용해요. bench/Benchmark.hs를 자유롭게 수정해서 다양한 입력에서 솔루션의 성능을 살펴봐요.
Exercism에 가입하고 Haskell 트랙을 연습 문제 107개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.
동시성과 병렬성의 차이를 살펴보고, JavaScript, Go, Elixir, Rust 같은 언어들이 택한 여러 접근법을 함께 봐요.