clojure pmap并发

作者: admin 日期: 2017-12-13 00:19:44 人气: - 评论: 0

clojure的map函数可以对集合进行变换处理

(range 10)

=> (0 1 2 3 4 5 6 7 8 9)


(map (partial + 1) (range 10))

=> (1 2 3 4 5 6 7 8 9 10)


其实clojure有个代替的函数pmap,使用了pmap之后对集合的操作将自动切换到线程池上并发执行,不过线程的切换也需要开销,如果任务粒度太小pmap反而会比map慢,大概慢10倍左右。


测试代码


(ns core)
(def start (.getTime (java.util.Date.)))
(last (pmap (fn [x]
(+ x (last (map (fn [x] (+ 1 x)) (range 10000000)))))
(range 100)))
(def end (.getTime (java.util.Date.)))
(println (/ (float (- end start )) 1000))


相关内容

发表评论
更多 网友评论0 条评论)
暂无评论

Copyright © 2012-2014 我的代码板 Inc. 保留所有权利。

页面耗时0.0293秒, 内存占用1.82 MB, 访问数据库13次

闽ICP备15009223号-1