电脑世界里的时间?

我们以 CPU的一次操作作为时间基准,类比到人类的一秒钟!

让我们看看什么是CPU的世界:CUP是电脑的心脏,CPU决定了这台电脑的上限。而决定CPU工作频率的是主频。

我的笔记本是 16年买的,主频好像是 2.6GHz。意味着每秒可以执行:2.6*10^9 个指令, 每个指令的时间大概是0.38ns ,现在很多计算机的配置应该都比这个高了,但我还是就拿这个主频来说事吧。

在CPU的世界里,我就把这个CPU执行一个指令的时间 成为单元时间, 假设这个单元时间 对应的我们现实世界的 一秒钟,我们看看CPU的世界是如果在计算机中度过的。

一级缓存的读取速度是:0.5ns,对应的人类时间是 1.3s,这个速度还是挺快的,一般一级缓存的大小是 32K;

分支预测错误需要耗时 5ns 对应的人类时间是 13s 是不是有点久了?什么是分支预测

二级缓存的读取速度是:7ns,对应的人类时间是 18.2s, 如果一级缓存没有命中的话,再去二级缓存中找,二级缓存通常大小是 256K , 速度就慢了18倍了,所以redis里没有命中,如果要去DB种找的话,那个性能会差得更多。不信接着下面的时间看…

每次内存寻址的速度是:100ns,对应的人类时间是 260S,已经是四分多钟了,这还只是寻址,从内存中读取数据属于IO操作,IO操作更费时间,这就是 内存 跟 CPU 的速度不在一个量级的地方了。

一次 CPU 上下文的切换需要大概: 1500ns, 对应1.5us,对应的人类时间是 65分钟。一个小时我都可以可以玩好几把狼人杀了!我想大家在初学多线程的时候都知道上下文的切换是很耗时的操作,更恐怖的是,CPU在这“一个小时内”,啥事都不干,仅仅只是将自己的资源从一个线程切换到了另一个线程而已。这个过程还破坏了之前的缓存,让后续的计算更费时间。

在 1Gbps 的网络上传输 2K 的数据需要 20us,对应的人类时间是14.4小时,也就是说你在聊天时发送一个表情,CPU能够……,所以说网络的传输是很慢的。

比网络传输性能更低的是 IO 操作,如果你的电脑能够搭配上一块 SSD ,你一定感觉你的电脑要飞起来了。但是……

SSD 寻址耗时为 180us,对应的人类时间大约是 5天,也就是说 你才找到你上班的位置,CPU已经把这个星期的班都上完了。虽然SSD比机械硬盘快很多倍,但是 跟内存 比起来都弱爆了,更别想着跟CPU 比了。

从内存中读取 1MB 的连续数据,耗时大约为 250us,对应的人类时间是 7.5天,内存处理一份文件的时间,CPU已经把一个星期的活干完了,还加了班。

同一个数据中心网络上跑一个来回需要 0.5ms,对应的人类时间大约是 15天,也就是半个月的时间。如果你的程序有段代码需要和数据中心的其他服务器交互,在这段时间里 CPU 都已经狂做了半个月的运算。减少不同服务组件的网络请求,是性能优化的一大课题。所以分布式服务中,经常会有要优化请求这些的难题,包括不限于dubbo请求超时,失败怎么处理。

从 SSD 读取 1MB 的顺序数据,大约需要 1ms,对应的人类时间是 1个月。只比内存慢了四倍,但CPU 都可以过两个春节还不止了。

再让我们来看看磁盘的表现:

磁盘寻址时间为 10ms,对应的人类时间是 10个月,10月怀胎,每位母亲都享受过这漫长的岁月。

这也可以看出,磁盘慢爆了,大概是蜗牛跟飞机的区别?上下文的切换,还有寻址这些的操作,真的很费时,因为这期间硬盘啥事都干不了,你要是能提前读取磁盘的内容也好啊,当然这是不可能的。。

从磁盘读取 1MB 连续数据需要 20ms,对应的人类时间是 20个月。为什么说硬盘是计算机性能的瓶颈呢,因为你的CPU 再好,内存再大,你不买SSD,你的电脑就是个蜗牛。你在京东买了个能让你兴奋的东西,结果等了快两年才送到你手上的感觉么?

数据请求在地球上两个不同城市之间来回走一趟大概需要150ms,对应的人类时间是12.5年,你能想象过年抢票的时候,你在深圳请求北京的服务器,跟北京的人请求北京的服务器抢同一张票,你把鼠标砸烂你都抢不过别人的无奈么。当然CDN 就是这个问题的一个解决方案:让用户和最接近自己的服务器交互,从而减少网络上报文的传输时间。

虚拟机重启一次大约要 4s 时间,换算成人类的时间是 3百多年。对于此,我想到了乔布斯要死命优化 Mac 系统开机启动时间的故事。如果机器能少重启而且每次启动能快一点,不仅能救人命,也能救 CPU 的命。

物理服务器重启一次需要 5min,换算成人类时间是 2万5千年,快赶上人类的文明史了。5 分钟人类都要等一会了,更别提 CPU 了,所以没事不要乱重启服务器啊,分分钟终结一个文明的节奏。

参考:
如果进入CPU的世界,时间会是怎样的?

我是一个 CPU:这个世界慢!死!了!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值