5
當通過parfib.hs code在github上讀書,我看到了關於一元版本的內存分配此評論:空間分析
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**
是否有任何紙張或博客文章,解釋這個巨大的內存佔用?非單向版本的內存分配在代碼註釋中記錄爲17GB(對於fib(42))。我搜索了Simon Monlow的par monad論文和演示文稿,但是我還沒有看到parfib的內存佔用情況分析。
請注意,在運行過程中分配240GB並不一定表示有任何運行時使用240GB的時間。 Haskell(以及其他基於功能語言的)程序傾向於執行分配和解除分配的時隙 - 這就是爲什麼很多關於GHC的優化研究關注分配策略和垃圾收集器的原因。 –