在 CPU 的角度以具体的数据来量化 CPU、磁盘、网络的速度,对计算机各个组件不同的速度差异有个更直观的认识

CPU : 每个指令大概需要 0.38ns,以此作为对比的基本单位 1s
一级缓存:读取时间大约为 0.5ns,对比 CPU 的时间大约是 1.3s
CPU 分支预测错误: 耗时为 5ns,对比 CPU 的时间大约是 13s
二级缓存:读取时间大约为 7ns,对比 CPU 的时间大约是 18.2s(与一级缓存相差了一个数量级)
锁:互斥锁的加锁和解锁大约需要 25ns,对比 CPU 的时间大约是 65s(一分钟)。所以说,在并发编程中,锁是一个很耗时的操作
内存:每次内存寻址需要 100ns,对比 CPU 的时间大约是 260s(四分钟,又提升了一个数量级)。CPU 和内存之间的瓶颈被称为冯诺依曼瓶颈
一次 CPU 上下文切换:大约耗时为 1500ns,对比 CPU 的时间大约是 65 分钟(一个小时)。在上下文切换的时间内,CPU 没有做任何有用的计算,只是切换了两个不同进程的寄存器和内存状态。
在 1Gbps 的网络上传输 2k 的数据需要 20us,对比 CPU 的时间大约是 14.4 个小时(理论值,实际中可能更久),可以看到网络上非常少的数据传输对于 CPU 来说已经很漫长了
SSD 随机读取耗时为 150us,对比 CPU 的时间为 4.5 天。SSD 的速度已经比机械硬盘快很多了,但对于 CPU 来说速度就想乌龟一样。所以应该少写 I/O 设备读取的代码,把常用的数据放到内存中作为缓存。
从内存中读取1MB 的连续数据,耗时大约是 250us,对比 CPU 的时间是 7.5 天
同一个数据中心网络上跑一个来回需要 0.5ms,对比 CPU 的时间大约是 15 天(半个月)。
从 SSD 读取 1MB 的顺序数据,大约学院 1ms,对比 CPU 的时间大约是一个月
磁盘寻址时间是 10ms,对比 CPU 的时间是 10 个月
从磁盘读取 1MB 的连续数据需要 20ms,对比 CPU 的时间是 20 个月。所以说IO 设备是计算机系统的瓶颈
从世界上不同城市的网络上走一个来回,平均需要 150ms,对比 CPU 的时间是 12.5 年。所以程序和架构都会尽量避免不同城市或者是跨国家的网络访问
虚拟机重启一次需要 4s 的时间,对比 CPU 的时间是 三百多年,
物理服务器重启一次的时间是 5min,对比 CPU 的时间是 2万5千年。

你可能感兴趣的:(在 CPU 的角度以具体的数据来量化 CPU、磁盘、网络的速度,对计算机各个组件不同的速度差异有个更直观的认识)