将两个或多个大型向量组合在一起的最有效和最惯用的方法是什么?这就是我一直在做的事情.在我的应用程序中,我使用矩阵,因此每个操作比添加两个双精度要贵一些.使用range驱动倍感觉有点笨拙.
(require '[clojure.core.reducers :as r])
(def a (mapv (fn [_] (rand 100)) (range 100000)))
(def b (mapv (fn [_] (rand 100)) (range 100000)))
(r/foldcat (r/map #(+ (a %) (b %)) (range (count a))))
Run Code Online (Sandbox Code Playgroud)
计算range可能最终成为多核CPU上最昂贵的位,因为它是唯一的非并行部分并涉及序列.