请在2024 Clojure状态调查!中分享您的看法。

欢迎!请参阅关于页面,了解更多关于如何使用这个网站的信息。

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

我注意到现有的Seq实现不是懒加载的,所以我只是在这个基础之上实现了一个基本的反向迭代器,而不是直接遍历树形结构 - 实际上我对Clojure核心库不直接提供ArrayList的可逆接口感到有些惊讶

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 %的运行时间
评估次数:在6个样本中的12次调用。
             执行时间平均值:75.794581 ms
    执行时间标准差:421.571821 µs
   执行时间下四分位数:75.476998 ms ( 2.5%)
   执行时间上四分位数:76.483561 ms (97.5%)
                   使用开销:2.127421 ns

在6个样本中找到1个异常值(16.6667%)
    low-severe     1 (16.6667 %)
 异常值带来的方差:13.8889 %,方差因异常值而适度膨胀
rseq
警告:最终GC需要54.64906330819225 %的运行时间
评估次数:在6个样本中的6次调用。
             执行时间平均值: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 报告)
...