这在使用Specter的一些用例测试中被发现是一个热点。
对`constantly`的常见用法的回顾表明,1个参数的情况是在野外使用`constantly`的最常见用法,因此只展开到了两个参数。
性能测试
(use 'criterium.core)
(def f (constantly 1))
(bench (dotimes [_ 1000] (f)))
(bench (dotimes [_ 1000] (f 1)))
(bench (dotimes [_ 1000] (f 1 2)))
;; 结果
;; 参数数 展开前 展开后
;; 0 611.455589 ns 607.800747 ns (预期无变化)
;; 1 3.098828 µs 611.116510 ns (~5x改进)
;; 2 3.508726 µs 620.415032 ns (~5x改进)
*补丁:* 0001-CLJ-2228- Improve-performance-of-constantly.patch
*预审者:* Alex Miller