小编Mil*_*gor的帖子

多键映射 - 性能比较

上下文

我们的应用程序将大量数据存储在许多不同类型的映射中,以便快速查找.为了保持简单(并且不考虑原始地图),它总是带有一个或多个键的地图.性能是我们的一大要求.

问题

我想找到性能最好的地图实现,正如这里建议的那样,我对这些实现进行了比较:

  1. 基于java.util.HashMap的Maps(嵌套映射)专用于3个键的映射:

    Map<K1, Map<K2, Map<K3, V>>>
    
    Run Code Online (Sandbox Code Playgroud)
  2. java.util.HashMap中的包装密钥(元组作为键)

    Map<Triple<K1, K2, K3>, V>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 元组作为net.openhft.koloboke.collect.map.hash.HashObjObjMap中的键,根据应该是(一个)最快的映射.

    HashObjObjMap<Triple<K1, K2, K3>, V>
    
    Run Code Online (Sandbox Code Playgroud)

期望

  1. 嵌套地图将具有最快的GET和最慢的PUT.
  2. Koloboke哈希映射将比jdk HashMap更快.

结果

Benchmark                                                Mode  Cnt   Score   Error  Units
TupleVsNestedMapsBenchmark.benchGetFromNestedMap         avgt   20  11.586 ± 0.205  ns/op
TupleVsNestedMapsBenchmark.benchGetFromTupleKolobokeMap  avgt   20  18.619 ± 0.113  ns/op
TupleVsNestedMapsBenchmark.benchGetFromTupleMap          avgt   20   8.985 ± 0.085  ns/op
TupleVsNestedMapsBenchmark.benchPutToNestedMap           avgt   20  15.106 ± 0.142  ns/op
TupleVsNestedMapsBenchmark.benchPutToTupleKolobokeMap    avgt   20  22.533 ± 0.335  ns/op
TupleVsNestedMapsBenchmark.benchPutToTupleMap            avgt   20   8.884 ± 0.084  ns/op
Run Code Online (Sandbox Code Playgroud)

基准

@OutputTimeUnit(TimeUnit.NANOSECONDS)
@BenchmarkMode(Mode.AverageTime)
@OperationsPerInvocation(100000) …
Run Code Online (Sandbox Code Playgroud)

java performance hashmap koloboke

5
推荐指数
1
解决办法
2310
查看次数

是否可以从 Aeron Cluster 重播?

我们想使用 Aeron 作为持久队列。是否可以设置 Aeron Cluster 以提供

  • 复制,以及
  • 是否可以为客户重播(如 Aeron Archive)?

aeron

5
推荐指数
1
解决办法
409
查看次数

标签 统计

aeron ×1

hashmap ×1

java ×1

koloboke ×1

performance ×1