缓存的思想由来已久,简单地说,缓存的目的就是把需要花费昂贵开销的计算结果保存起来,在以后需要的时候直接取出,而避免重复计算,一切缓存的本质都是如此。计算机乃至互联网,缓存的应用数不胜数,我们都知道CPU缓存,它是位于CPU和内存之间的临时存储器,它的容量不大,但是交换速度要高于内存,CPU将频繁交换的数据放在缓存中,如果以后需要则直接读取缓存,从而避免访问速度较慢的内存,不可否认,尽管我们认为内存速度已经很快,但是在CPU缓存面前,它还是力不从心。

缓冲(buffer)。缓冲的原意出自物理学,那就是减缓冲击力,在计算机应用场景中,我们使用它的引申含义,其目的在于改善各部件之间由于速度不同而引发的问题。比如将用户态地址空间的数据写入磁盘时,显然内存的速度比磁盘速度要快得多,所以人们设计了磁盘缓冲区,让数据源源不断地流进缓冲区,再由缓冲区负责写入磁盘,这样内存便可以不必随着磁盘的慢节奏来工作,所以磁盘缓冲区起到了将快速设备和慢速设备平滑衔接的作用,另外我们在线观看视频的时候,视频缓冲区的意义也是如此。

缓冲和缓存有一些相似之处,比如它们都需要一块存储区,而且它们的本质都与速度不一致有关,即便是缓存,如果计算速度和读取缓存的速度差不多,那么它也毫无意义。但是,缓存更加注重的是策略,也就是说缓存命中率,如果每次都能在缓存中找到需要的数据,那是最理想的结果,如果每次都在缓存中找不到需要的数据,那么缓存将变得毫无价值,并且还由于缓存的管理逻辑增加了新的开销。所以凡是使用缓存,都一定要意识到命中率的重要性。


codecraft
11.9k 声望2k 粉丝

当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很自豪告诉世人,我曾经将代码注入生命去打造互联网的浪潮之巅,那是个很疯狂的时代,我在一波波的浪潮上留下...