在测试某些Specter用例时,这被发现是一个热点。
对常量函数常见用法的审查表明,状态1是最常见的`constantly`使用情况,因此只展开了两个参数。
性能测试
(使用'criterium.core)
(定义f(常量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