对于普通的计算机, 对以下事件的平均耗时从小到大排序为——:
A.读取1KB内存数据 B.从硬盘连续读取1KB数据 C.读取一次L2缓存 D.一次磁盘寻道
C,A,D,B
C,D,A,B
D,C,A,B
D,A,C,B
答案是A
首先, 速度最快的当然是缓存, 接着消耗时间最少的是内存, 磁盘寻道时间, 然后是硬盘连续读取时间
- 一个个来分析, L2缓存是level2缓存是二级缓存的意思, 通过缓存直接与cpu进行数据交互, 这个是最快最直接的。
这部分内容涉及到cpu缓存, 分为一级缓存,二级缓存,三级缓存。
一级缓存(L1 Cache)就是指cpu第一层级的高速缓存, 主要担当的工作是缓存指令和缓存数据。 一级缓存容量与结构对cpu的影响十分大, 但是由于它的结构比较复杂,又考虑到成本等因素, 一般来说,cpu的一级缓存较小, 通常cpu的一级缓存也就做到256kb左右的水平。
二级缓存(L2 Cache66)就是指cpu的第二层级的告诉缓存, 而二级缓存的容量会直接影响到cpu的性能, 二级缓存的容量越大越好。 例如intel的第八代i7-8700处理器, 共有六个核心数量, 而每个核心都拥有256kb的二级缓存, 属于各核心独享, 这样二级缓存总数就达到了1.5mb。
三级缓存(L3 Cache)就是指cpu的第三层级的告诉缓存, 其租用是进一步降低内存的延迟, 同时提升海量数据量计算时的性能。 和一级缓存,二级缓存不同的是, 三级缓存是核心共享的, 能够将容量做的很大。 - 第二个,内存读取时间, 当通过缓存寻找数据时发现数据在缓存中不存在,这时需要通过到内存中去寻找, 但是内存的传输速度就没有缓存这么快了, 所以, 内存读取数据的时间消耗要大于缓存。
- 第三个从硬盘连续读取1kb,这个意思就是读取硬盘数据, 其中读取硬盘数据的时间消耗主要是由寻道时间, 数据传输时间, 还有旋转时间三部分时间组成, 所以磁盘寻道时间一定小于总的此案读取时间