Caffeine/Guava性能对比测试

Caffeine/Guava性能对比测试

项目中使用Guava作为内存缓存,最近需要替换为Caffeine,网上有很多性能测试的文章,但基本都是引用的官方测试结果和图片,因此尝试自己来测试一下,对比Caffeine和Guava的性能差别,下面是测试过程:


测试环境:

  • CPU:i7-8700 3.20GHz 6核
  • 内存:16g
  • 系统:Windows 10
  • JDK版本:8
  • IDE:IDEA

一、速度测试:

1.测试逻辑:

  • 构建Cache,load方法为简单的字符串拼接
  • 构建任务对象(Runnable)
    • 读:循环遍历get 250000个Key
    • 写:循环遍历put 250000个Key及其值(拼接字符串)
  • 先将250000个字符串加载到cache后,提交所有任务线程,预热10s(减少Java编译带来的影响)
  • 开始计时,统计每10秒的count,共6轮(排除偶然性误差),最后统计每轮中的每秒操作数的平均值

2.测试结果:

6个批次
Caffeine/Guava性能对比测试_第1张图片

(1) 6个线程纯读:

Caffeine/Guava性能对比测试_第2张图片

(2) 4个线程读+2个线程写:

Caffeine/Guava性能对比测试_第3张图片

二、内存占用测试

1.测试逻辑:

  • 基于项目中的使用场景,构建业务对象缓存
  • 先初始化缓存,10s后将数据库中的20w+条业务对象数据存入缓存中,并主动触发一次gc,对比剩余内存占用

2.测试结果:

Guava和Caffeine在加载完20w条数据后,通过GC清理掉临时占用的内存,最后都保持了420M的内存占用,无明显区别,整个内存变化如下:

内存监控工具使用JProfiler

(1)Guava:

Caffeine/Guava性能对比测试_第4张图片

(2)Caffeine:

Caffeine/Guava性能对比测试_第5张图片

三、结论:

通过一系列测试,从结果来看:

  • 在相同cpu负载下,Caffeine Cache的读取和写入速度优于Guava Cache,差距在4倍以上,且在写场景下优势更大。
  • 但在内存占用方面来看,两者无明显区别。

你可能感兴趣的:(缓存)