基准

基准测试是用java microbenchmark harness(即jmh,如果想看中文的也可以查看这里)来提供准确的分析.缓存被配置为:

  • Caffeine和ConcurrentLinkedHashMap根据CPU数量来调整内部结构的大小
  • Guava配置的并发级别为64(默认为4,以减少内存使用量)。 请注意,Guava#2063可以解决性能不佳的问题(可以提升25倍!),但是已经积压了多年没有解决。
  • Ehcache v2内部硬编码为100 segments,而v3没有分段.
  • Infinispan“old”是一个类似Guava的缓存,配置的并发级别为64
  • Infinispan“new”是一个使用无锁deque的重写(在v7.2 +中默认启用)

桌面级

在MacBook Pro i7-4870HQ CPU @ 2.50GHz(4核)16 GB Yosemite上运行。

计算

在这个基准测试中,缓存是无界的,完全填充的,并且计算返回一个常数值。 这个基准证明了当成员存在时由于锁所导致的开销。 caffeine执行无锁预筛选,然后在缺少调用时回落至原子计算。 所绘制的场景都是检索单个条目的所有线程(“sameKey”),以及基于Zipf分布(“spread”)检索不同键的线程。

Read(100%)

在此基准测试中,8个线程同时从配置了最大大小的缓存中读取。

Read (75%) / Write (25%)

在此基准测试中,6个线程同时读取,2个线程写入配置了最大大小的缓存。

Write (100%)

在此基准测试中,8个线程同时写入配置了最大大小的缓存。

服务器级

基准测试是在Azure G4实例上运行的,这是在云提供商免费试用期间可用的最大实例。 该机器被报告为单插槽Xeon E5-2698B v3 @ 2.00GHz(16核,禁用超线程),224 GB,Ubuntu 15.04。

compute

Cache same key spread
ConcurrentHashMap 29,679,839 65,726,864
Caffeine 1,581,524,763 530,182,873
Guava 25,132,366 114,608,951

Read(100%)

无界 ops/s (8 threads) ops/s (16 threads)
ConcurrentHashMap (v8) 560,367,163 1,171,389,095
ConcurrentHashMap (v7) 301,331,240 542,304,172
有界 ops/s (8 threads) ops/s (16 threads)
Caffeine 181,703,298 382,355,194
ConcurrentLinkedHashMap 154,771,582 313,892,223
LinkedHashMap_Lru 9,209,065 13,598,576
Guava (default) 12,434,655 10,647,238
Guava (64) 24,533,922 43,101,468
Ehcache2_Lru 11,252,172 20,750,543
Ehcache3_Lru 11,415,248 17,611,169
Infinispan_Old_Lru 29,073,439 49,719,833
Infinispan_New_Lru 4,888,027 4,749,506

Read (75%) / Write (25%)

无界 ops/s (8 threads) ops/s (16 threads)
ConcurrentHashMap (v8) 441,965,711 790,602,730
ConcurrentHashMap (v7) 196,215,481 346,479,582
有界 ops/s (8 threads) ops/s (16 threads)
Caffeine 144,193,725 279,440,749
ConcurrentLinkedHashMap 63,968,369 122,342,605
LinkedHashMap_Lru 8,668,785 12,779,625
Guava (default) 11,782,063 11,886,673
Guava (64) 22,782,431 37,332,090
Ehcache2_Lru 9,472,810 8,471,016
Ehcache3_Lru 10,958,697 17,302,523
Infinispan_Old_Lru 22,663,359 37,270,102
Infinispan_New_Lru 4,753,313 4,885,061

Write (100%)

无界 ops/s (8 threads) ops/s (16 threads)
ConcurrentHashMap (v8) 60,477,550 50,591,346
ConcurrentHashMap (v7) 46,204,091 36,659,485
有界 ops/s (8 threads) ops/s (16 threads)
Caffeine 55,281,751 48,295,360
ConcurrentLinkedHashMap 23,819,597 39,797,969
LinkedHashMap_Lru 10,179,891 10,859,549
Guava (default) 4,764,056 5,446,282
Guava (64) 8,128,024 7,483,986
Ehcache2_Lru 4,205,936 4,697,745
Ehcache3_Lru 10,051,020 13,939,317
Infinispan_Old_Lru 7,538,859 7,332,973
Infinispan_New_Lru 4,797,502 5,086,305
Copyright © www.gitbook.com/@vitzhou 2016 all right reserved,powered by Gitbook该文件修订时间: 2018-02-11 03:39:24

results matching ""

    No results matching ""