基本重构,移除了 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