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

欢迎!请查看关于页面以获取更多关于如何使用本站的信息。

0
Clojure

在行118处,{{clojure.data/diff}}定义了

java.util.Map (diff-similar [a b] (diff-associative a b (set/union (keys a) (keys b))))

由于{{keys}}返回一个key序列,这似乎是一个错误。{{clojure.set/union}}在非集合上的表现奇特且不一致,在这种情况下,两个key序列被连接起来。根据粗略的基准测试,似乎这个(可能是)bug在地图没有共同键时轻微提高性能,而有共同键时显著降低性能。由于{{diff-associative}}中的归并reduce,结果仍然是正确的。

补丁很简单(只需在each key sequence上调用set)。

3答案

0

由jafingerhut发表的评论

clj-1087-diff-perf-enhance-patch-v1.txt于2012年10月15日实施,实现了Tom建议的性能提升,尽管并非完全依照他所建议的方式。它确实计算了两个key序列的并集。

0

由jafingerhut发表的评论

我建议,可能比性能问题更重要的是,Clojure依赖于其未记录的行为,即clojure.set/union在某些非集合参数上工作。

0
...