Al leer a través parfib.hs code en github, vi este comentario acerca de la asignación de memoria para la versión monádico:análisis espacial para parfib en el ejemplo mónada-par
Monad-par version:
fib(38) non-threaded: 23.3s 23.1s
fib(38) 1 thread : 24.7s 24.5s
fib(38) 4 threads: 8.2s 31.3s
fib(40) 4 threads: 20.6s 78.6s **240GB allocated**
¿Hay algún papel poste o blog que explica esta gran capacidad de memoria ? La asignación de memoria de la versión no monádica se documenta en el comentario del código como 17 GB (para fib (42)). Busqué a través de documentos de monad y presentación de Simon Marlow, pero no he visto ningún análisis de las huellas de memoria para parfib.
Tenga en cuenta que 240 GB asignados durante una ejecución no indica necesariamente que hubo un momento en el que la ejecución utilizaba 240 GB. Los programas de Haskell (y otros basados en el lenguaje funcional) tienden a hacer una gran cantidad de asignaciones y desasignaciones, razón por la cual gran parte de la investigación de optimización en GHC se centra en las estrategias de asignación y el recolector de basura. –