通过对移除 let 表达式的基本重构,只需对每次迭代进行单个计数器检查,从而实现了 25% 的性能提升。通过此补丁,最后一次迭代只需要进行 2 次检查(如果计数器参数 <= 0)...
;; master
(quick-bench (into [] (take 1000) (range 2000)))
WARNING: 最终 GC 需要 34.82584189073624 % 的运行时间
评估计数:在 6 个样本的 2175 次调用中 13050
执行时间平均值:46.921254 µs
执行时间标准差:1.904733 µs
执行时间下四分位数:45.124921 µs (2.5%)
执行时间上四分位数:49.427201 µs (97.5%)
开销使用:2.367243 ns
;; w/ patch
(quick-bench (into [] (take 1000) (range 2000)))
WARNING: 最终 GC 需要 34.74448252054369 % 的运行时间
评估计数:在 6 个样本的 3017 次调用中 18102
执行时间平均值:34.301193 µs
执行时间标准差:1.714105 µs
执行时间下四分位数:32.341349 µs (2.5%)
执行时间上四分位数:37.046851 µs (97.5%)
开销使用:2.367243 ns