微基准比较Scala可变,不可变集合与java.util.concurrent。*集合

时间:2011-09-27 11:49:12

标签: scala collections immutability microbenchmark

在多线程环境中,是否有任何已发布的微基准测试将Scala可变集合与不可变集合以及java.util.concurrent中的集合进行比较?我特别感兴趣的是读者远远超过编写者,比如在服务器端代码中缓存HashMaps。

Clojure集合的微基准测试也是可以接受的,因为它们的算法类似于Scala 2.8持久集合中使用的算法。

如果没有完成,我会写自己的,但编写好的微基准并非易事。

3 个答案:

答案 0 :(得分:2)

这里有一些比较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

这些微观基准测试专注于测试单个操作的性能。如果您打算编写自己的基准测试,这可能会有用:

http://buytaert.net/files/oopsla07-georges.pdf

答案 1 :(得分:1)

李浩义的Benchmarking Scala Collections是一项详细而全面的研究,可以解决您的疑问。这里引用的时间太长了。

答案 2 :(得分:0)

为什么不尝试使用java.util.concurrent.ConcurrentHashMap呢?这样你不必同步,你的百万读取速度会快得多(以及一次写入)。