The*_*eLQ 3 java performance multimap
在我的代码中,我有一个被大量使用的地图,在几秒钟内使用了数千次。最初我有一个 TreeMap,但是当测试 9,000 个条目时,我发现我的旧处理器融化了。这需要扩大规模。所以我转向了 HashMap,性能非常出色。
现在我正在改变我的设计并正在寻找 MultiMap。然而,我担心侧面的性能影响get(),因为它必须迭代所述大地图以挑选匹配的键,并且当多次调用甚至同步时,它似乎会很慢。
是否有一个好的 MultiMap 能够以出色的性能处理如此大的值?在此应用程序中,性能至关重要,因为可能有许多大型独立映射处理非常大的工作负载,从而使“小”性能损失成为很大的问题。
如果它可以被提取出来单独工作而没有任何依赖,那就加分了。
在我的一个问题中向我推荐的是 Apache Commons MultiMap: http://commons.apache.org/collections/api-3.2.1/org/apache/commons/collections/MultiHashMap.html
它是免费软件,因此您至少可以获取源代码来查看它,并且根据您的许可证情况,您可以修改它或独立使用它。
它在内部使用 ArrayList,但我想你可以将其更改为使用 HashSet 或其他东西。我会看看createCollection(Collection coll)方法。
更新:实际上,Guava 的 HashMultiMap 似乎已经是我所说的: https: //github.com/google/guava/blob/master/guava/src/com/google/common/collect/Multimap.java
我查看了源代码,似乎每个值的集合实际上都由 HashSet 支持。
| 归档时间: |
|
| 查看次数: |
9988 次 |
| 最近记录: |