我们的应用程序将大量数据存储在许多不同类型的映射中,以便快速查找.为了保持简单(并且不考虑原始地图),它总是带有一个或多个键的地图.性能是我们的一大要求.
我想找到性能最好的地图实现,正如这里建议的那样,我对这些实现进行了比较:
基于java.util.HashMap的Maps(嵌套映射)专用于3个键的映射:
Map<K1, Map<K2, Map<K3, V>>>
Run Code Online (Sandbox Code Playgroud)java.util.HashMap中的包装密钥(元组作为键)
Map<Triple<K1, K2, K3>, V>
Run Code Online (Sandbox Code Playgroud)元组作为net.openhft.koloboke.collect.map.hash.HashObjObjMap中的键,根据这应该是(一个)最快的映射.
HashObjObjMap<Triple<K1, K2, K3>, V>
Run Code Online (Sandbox Code Playgroud)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) 我们想使用 Aeron 作为持久队列。是否可以设置 Aeron Cluster 以提供