多方集合的mapv当前执行
(into [] (map f c1 c2 c3))
我建议将它们改为
(let [it1 (clojure.lang.RT/iter c1)
it2 (clojure.lang.RT/iter c2)]
(loop [out (transient [])]
(if (and (.hasNext it1) (.hasNext it2))
(recur (conj! out (f (.next it1) (.next it2)))))
(persistent! out))))
这要快5倍。
对于可变参数,我们可以检查colls是否是{{counted?}}
- 如果是:使用{{MultiIterator}}
- 如果不是:按照当前实现将它们转发到{{map}}
对这个想法有什么看法吗?或者这个可能会破坏什么吗?