在多线程环境中,有没有发布的微基准来比较Scala可变集合和不可变集合以及java.util.concurrent
中的集合?我特别感兴趣的是读者数量远远超过作者的情况,比如在服务器端代码中缓存HashMaps。
Clojure集合的微基准测试也是可以接受的,因为它们的算法与Scala2.8持久集合中使用的算法相似。
如果还没有完成,我会编写自己的,但是编写好的微基准测试并不容易。
发布于 2011-09-28 20:10:28
这里有一些比较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
发布于 2016-10-15 01:28:55
李浩一的Benchmarking Scala Collections是一个详细和全面的研究,解决了您的问题。在这里引用太长了。
发布于 2011-09-28 02:47:59
那你为什么不试试使用java.util.concurrent.ConcurrentHashMap呢?这样你就不必同步了,你的百万次读操作将会快得多(就像一次写操作一样)。
https://stackoverflow.com/questions/7568608
复制相似问题