小编Say*_*ras的帖子

期货以某种方式比代理商慢?

以下代码基本上只允许您并行执行类似(function(range n))的操作.

(experiment-with-agents 10000 10 #(filter prime? %))
Run Code Online (Sandbox Code Playgroud)

例如,这可以使用10个代理查找0到10000之间的素数.

(experiment-with-futures 10000 10 #(filter prime? %))
Run Code Online (Sandbox Code Playgroud)

与期货一样.

现在的问题是,期货的解决方案不会随着更多的期货而更快地运行.例:

; Futures
(time (experiment-with-futures 10000 1 #(filter prime? %)))
"Elapsed time: 33417.524634 msecs"

(time (experiment-with-futures 10000 10 #(filter prime? %)))
"Elapsed time: 33891.495702 msecs"

; Agents
(time (experiment-with-agents 10000 1 #(filter prime? %)))
"Elapsed time: 33048.80492 msecs"

(time (experiment-with-agents 10000 10 #(filter prime? %)))
"Elapsed time: 9211.864133 msecs"
Run Code Online (Sandbox Code Playgroud)

为什么?我做错了什么(可能是Clojure的新手,只是玩弄东西^^)?因为我认为期货在这种情况下实际上是首选的.

资源:

(defn setup-agents
  [coll-size num-agents]
  (let [step (/ coll-size num-agents)
        parts (partition step (range …
Run Code Online (Sandbox Code Playgroud)

clojure

2
推荐指数
1
解决办法
112
查看次数

标签 统计

clojure ×1