2024 Clojure状态调查!分享您的想法。

欢迎!请查看关于页面获取更多关于如何使用的信息。

0
data.int-map
如之前在https://github.com/ztellman/immutable-int-map/pull/1中讨论

我注意到现有的Seq实现不是惰性的,因此我在此基础上实现了一个基本的逆迭代器,而不是直接遍历树的最右分支 - 我实际上非常惊讶核心Clojure没有为ArrayList提供Reversible。

补丁从https://github.com/glenjamin/data.int-map/tree/rseq获取,以下为基准测试


user=> (require '[clojure.data.benchmark :refer (entries)])
  #_=>          '[clojure.data.int-map :as i]
  #_=>          '[criterium.core :as c])
nil
user=>

user=> (let [m (into (i/int-map) entries)]
  #_=>   (println "seq")
  #_=>   (c/quick-bench (dorun (seq m)))
  #_=>   (println "rseq")
  #_=>   (c/quick-bench (dorun (rseq m))))
seq
警告:最后GC需要的运行时间占比为8.9263203426305%
警告:最后GC需要的运行时间占比为48.03202811726098%
评估计数:12个,抽样6次,每次调用2次。
             执行时间平均:75.794581 ms
    执行时间标准差:421.571821 µs
   执行时间下四分位数:75.476998 ms(2.5%)
   执行时间上四分位数:76.483561 ms(97.5%)
                   开销使用:2.127421 ns

在6个样本中找到1个异常值(16.6667%)
   低严重      1(16.6667%)
 异常值方差:13.8889% 异常值方差受异常值影响中等
rseq
警告:最后GC需要的运行时间占比为54.64906330819225%
评估计数:6个,抽样6次,每次调用1次。
             执行时间平均:101.840831 ms
    执行时间标准差:723.601456 µs
   执行时间下四分位数:100.881998 ms(2.5%)
   执行时间上四分位数:102.496873 ms(97.5%)
                   开销使用:2.127421 ns


CLA已签署。

1 答案

0
参考:https://clojure.atlassian.net/browse/DIMAP-1(由alex+import报告)
...