缓存命中和性能的关系论证

Posted doctors

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了缓存命中和性能的关系论证相关的知识,希望对你有一定的参考价值。

《性能之巅》中关于性能和缓存部分,有两点在读到是有一些困惑,做以下思考。

1. 为什么99%的缓存命中,和98%的缓存命中,两者性能差距,远大于11%和10%的差距

具体的论证仔细思考了一下,可以推导如下:

现做以下变量定义:

k:命中率,[0,1]之间

t:没有命中的处理耗时,[1,max],此处假设命中后的处理时间是1,此处假定命中和不命中的处理速度为固定倍数差异。

A:总的任务量

T:总的开销时间

于是有以下公式:

T = A * k *  1 + A * (1-k)* t

进行推导,就有以下关系:

A/T = 1 / t + (1-t)k

综上,性能可以用A/T来衡量,即:工作总量/总的耗时;

那么很明显,在命中和不命中的速度差异情况下,命中率和耗时呈线性关系,但是和整体的性能呈非线性,斜率会越来越大。

 

2. 失效率,和命中率的计算思路是有差异的

失效率 = 每秒内,命中失败的次数

命中率 = 命中次数 /(命中次数 + 失效次数)

总的运行时间,要综合考虑命中率,以及失效引起的耗时,以及失效率来衡量,不一定命中率高的的系统就比命中率低的系统要性能好。

 


以上是关于缓存命中和性能的关系论证的主要内容,如果未能解决你的问题,请参考以下文章

新设备上的 AWS Appsync 缓存未命中和 403 错误

如何在 grails 应用程序中监控 Hibernate 统计信息(缓存命中和未命中)?

如何强制 Magento 使用 APC 缓存

如何缓存静态画布区域以获得性能

“干净数据缓存未命中”和“脏数据缓存未命中”之间的区别

缓存性能HTML5缓存的那些事