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

欢迎!请查看关于页面以了解更多有关如何工作的信息。

0
集合

展开小映射增强的占位符(CLJ-1517中向量的伴随)。

3 个答案

0

由:jafingerhut

是否预期这些比PersistentArrayMap表现得更好?

0

由:ztellman

是的,在某些情况下,效果显著,原因有三:

  • 位置构造器,不需要数组实例化/填充
  • 通过哈希比较来短路等性检查
  • 在所有操作上无需迭代

https://github.com/ztellman/cambrian-collections/blob/master/test/cambrian_collections/map_test.clj#L64-L148有一系列基准测试,比较了与不受益于哈希比较的关键字和受益于哈希比较的符号的映射的操作。7个条目的映射会导致展开映射溢出,所以它们只存在于测试溢出机制。

我已在笔记本电脑上运行了基准测试套件,结果在https://gist.github.com/ztellman/961001e1a77e4f76ee1d。一些引人注目的结果

其余基准测试 由于展开而略有加速,但大部分性能提升来自上述行为。在一个不那么合成型的基准测试中,我发现Cheshire JSON解码(其中33%是JSON词法分析,66%是数据结构构建)的加速大约在30-40%之间。

0
参考: https://clojure.atlassian.net/browse/CLJ-1610 (由alexmiller报告)
...