這是一個關於並行策略和parMap
(Control.Parallel.Strategies)懷疑平行parMap和戰略
這是關於parMap rseq
等價與parMap rpar
。
由於parMap
使用parList
它並行評估,因此使用rseq
或rpar
將平行評估WHNF。不是嗎?
更新:
由於
parMap strat f = (`using` parList strat) . map f
parList = parTraversable
parTraversable strat = evalTraversable (rpar `dot` strat)
evalTraversable = traverse
strat2 `dot` strat1 = strat2 . runEval . strat1
parMap rseq
使用策略
rpar `dot` rseq
這給:
rpar . runEval . rseq
這給:
(\x -> x `par` return x) . runEval . (\x -> x `pseq` return x)
這是很難去思考的結果。
更新:,在橫越的容器的每個元素將被激發了一個平行
我看到的,惰性計算需要該組合物的第一的第一功能,和
(\x -> x `par` return x)
補助儘可能計算。
因此,我們可以添加(RPAR dot
RSEQ)相當於(RSEQ dot
RPAR),不是嗎?
並且parMap rpar
是多餘的,因爲它爲每個可遍歷元素產生兩個火花。 !