是否有任何已发布的微基准可以将 Scala 可变和不可变集合相互比较,以及java.util.concurrent
在多线程环境中的集合?我对读者远远超过作者的情况特别感兴趣,比如在服务器端代码中缓存 HashMap。
Clojure 集合的微基准也是可以接受的,因为它们的算法类似于 Scala 2.8 持久性集合中使用的算法。
如果还没有完成,我会自己编写,但是编写好的微基准测试并非易事。
是否有任何已发布的微基准可以将 Scala 可变和不可变集合相互比较,以及java.util.concurrent
在多线程环境中的集合?我对读者远远超过作者的情况特别感兴趣,比如在服务器端代码中缓存 HashMap。
Clojure 集合的微基准也是可以接受的,因为它们的算法类似于 Scala 2.8 持久性集合中使用的算法。
如果还没有完成,我会自己编写,但是编写好的微基准测试并非易事。
这里有一些比较 Java 哈希映射、Scala 哈希映射、Java 并发哈希映射、Java 并发跳过列表、Java 并行数组和 Scala 并行集合的结果(技术报告末尾):
http://infoscience.epfl.ch/record/165523/files/techrep.pdf
这里有并发跳过列表和 Java 并发哈希映射的更详细比较(也在报告主要部分的末尾,附录之前):
http://infoscience.epfl.ch/record/166908/files/ctries-techreport.pdf
这些微基准测试专注于测试单个操作的性能。如果您打算编写自己的基准测试,这可能会很有用:
Li Haoyi 的Benchmarking Scala Collections是一项详细而全面的研究,可以解决您的查询。在这里引用太长了。
那你为什么不尝试使用 java.util.concurrent.ConcurrentHashMap 呢?这样您就不必同步,并且您的百万次读取会更快(以及一次写入)。