我在Clojure REPL中测试了map和pmap函数,如下所示。这让我感到困惑:为什么并行的pmap比map更慢?
user=> (def lg (range 1 10000000))
user=> (time (def rs (doall (pmap #(* % %) lg))))
"Elapsed time: **125739.056** msecs"
# -------------------------------------------------------
user=> (def lg (range 1 10000000))
user=> (time (def rs (doall (map #(* % %) lg))))
"Elapsed time: **5804.485** msecs"
**PS: the machine has 8 cores**
(time (def a (mapv #(* % %) l)))
进行比较,并检查 Clojure 版本。 - ctpenrose