概括总结
这一版测试把商品信息存在内存中,而不是每次都查询数据库。结果是:查询缓存比查询数据库的性能好5.28%
。
016版本更新说明
Version016NoCache.java:没有缓存,查数据库的版本。
Version016WithCache.java:直接查询缓存的版本。
GoodsCache.java:简单的商品缓存类。
测试结果
统计10次测试的平均值之后:
Version016NoCache
提交每个订单平均耗时的纳秒数: 4674079
Version016WithCache
提交每个订单平均耗时的纳秒数: 4330435
Version016NoCache
每秒钟可以提交的订单数: 214
Version016WithCache
每秒钟可以提交的订单数: 232
性能差别为:(4674079 - 4330435) / 4330435 * 100% = 3.65%,即 “查询缓存” 比 “查询数据库” 性能好5.28%
。
【备注】:不同的机器上的测试结果会不一样,以上测试结果仅供参考。
测试结果说明
查缓存当然会比查数据库性能好一些。这次测试的目的不是为了证明它好,而是为了测试到底好多少。
值得一提的是,由于我们在这个系列的第011篇已经放弃在Java代码中同步验证库存,因此GoodsCache.java类中没有使用synchronized
来约束。(一旦使用了synchronized
来约束,性能会比查询数据库还要低)。
源码
016版本的github源码在这里,如果不知道怎样运行项目,请参考这里