2024 年 Clojure 状态调查! 分享您的想法。

欢迎!请参阅关于页面,了解更多关于此功能的信息。

0 投票
ClojureScript
这是关于 {{transient []}} 的一个非常简单的优化。它避免了复制空数组。

性能改进,对于小向量(5-32 个元素)的 {{mapv}},在 FF 和 Chrome 上可以达到 20% 到 100%。


(defn faster-editable-root
  [node]
  (if (identical? (.-EMPTY_NODE PersistentVector) node)
    (VectorNode. (js-obj) (make-array 32))
    (VectorNode. (js-obj) (aclone (.-arr node)))))
(def orig-editabe-root tv-editable-root)
(enable-console-print!)
(dotimes [_ 2]
  (doseq [size [5 10 40]]
    (let [xs (range size)
          sims 500000]
      (set! tv-editable-root orig-editabe-root)
      (prn "Size: " size)
      (simple-benchmark [] (mapv inc xs) sims)
      (set! tv-editable-root faster-editable-root)
      (prn "NEW:")
      (simple-benchmark [] (mapv inc xs) sims))))

4 个答案

0 投票

由 mfikes 发表的评论

CLJS-2132.patch 通过 CI (/)

0 投票

由 mfikes 发表的评论

CLJS-2132.patch 添加到 Patch Tender (i)

0 投票

由 mfikes 发表的评论

CLJS-2132.patch 通过 Canary (/)

0 投票
参考: https://clojure.atlassian.net/browse/CLJS-2132(由 aralo 报告)
欢迎使用 Clojure Q&A,在这里您可以向 Clojure 社区成员提问并获得答案。
...