【发布时间】:2014-03-28 17:12:16
【问题描述】:
为什么使用 reducers 库进行映射/归约的性能比普通的 map/reduce 差?
user=> (time (reduce + (map inc (range 100000000))))
"Elapsed time: 14412.627966 msecs"
5000000050000000
user=> (time (reduce + (r/map inc (range 100000000))))
... (C-c)
user=> (time (r/reduce + (r/map inc (range 100000000))))
....(C-c)
我有两个杀死后两个,因为它需要无限长的时间。这里有什么问题?
编辑: 似乎其他语言也有类似的问题。 Scala 似乎只突破了一百万。 Why do Scala parallel collections sometimes cause an OutOfMemoryError? 。虽然 clojure reducer 比正常速度快一百万。
【问题讨论】:
-
问清楚,你用的是哪个库?
-
@JiacaiLiu clojure.core.reducers, clojure.org/reducers