gpt4 book ai didi

performance - 为什么这个 Clojure Reducers r/fold 没有提供性能优势?

转载 作者:行者123 更新时间:2023-12-04 14:12:28 26 4
gpt4 key购买 nike

我想知道为什么下面的代码在 r/fold 的情况下没有提供加速?我对 reducer 有误解吗?

我在一个非常慢的(虽然有 2 个内核)Ubuntu 12.04 开发箱上运行它,通过 emacs 和 lein run,每个都有相同的结果。

(require '[clojure.core.reducers :as r])
(.. Runtime getRuntime availableProcessors)

;; 2
(let
[n 80000000
vs #(range n)]

(time (reduce + (vs)))
(time (r/fold + (vs)))

“耗时:26076.434324 毫秒”
“耗时:25500.234034 毫秒”

谢谢。

最佳答案

你正在折叠一个序列。并行折叠现在只发生在持久向量和映射上。

这种性能测试不如使用诸如Criterium之类的东西还有各种原因。 ,但这可能是一个单独的讨论。 (一些原因是垃圾收集、JVM 预热和内联、Emacs 和 lein 上时髦的默认 jvm 设置、装箱和检查数学等。)

由于上述许多原因仍然是错误的,但比较有用:

(require '[clojure.core.reducers :as r])
(def v (vec (range 800000)))
(dotimes [_ 100] (time (reduce + v)))
(dotimes [_ 100] (time (r/fold + v)))

观看最后 2 次运行的最佳时间。

关于performance - 为什么这个 Clojure Reducers r/fold 没有提供性能优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26290700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com