2024年 Clojure 调查中分享您的想法!

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

0
Collections

未展开小图增强的占位符(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
by
参考:[CLJ-1610](https://clojure.atlassian.net/browse/CLJ-1610)(由alexmiller报告)
...