如果您可以假设缓存命中比缓存未命中快得多,那么您会发现随着时间的推移,即使只有缓存未命中,使用缓存仍然会与不使用缓存一样快或更快。
请参阅下面的数学:
Number of hits = NumRequests - #CacheMisses
AverageTime = ((NumRequests-#CacheMisses) * TimePerHit + #CacheMisses * TimePerMiss)/NumRequests
Run Code Online (Sandbox Code Playgroud)
如果我们假设 NumRequests 是无穷大(这是一个极限问题,不要害怕微积分),我们可以看到:
AverageTime = Infinity*TimePerHit/Infinity - #CacheMisses*TimePerHit/Infinity + #CacheMisses*TimePerMiss/Infinity
Run Code Online (Sandbox Code Playgroud)
#CacheMisses 的两项都为零,但整个方程解析为:
AverageTime = TimePerHit
Run Code Online (Sandbox Code Playgroud)
当然,这是在请求数量无穷大的情况下进行的,但是您可以看到,通过使用缓存,这将如何轻松地加速您的系统。