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

每个人都会有一些吐槽的想法存在,我替CPU把它的吐槽 放在我的博客里吧!

不知道大家有没有感觉每天写代码的时间过得很快啊,有时候一天过去了一个功能还没完成,但是时间就这么没了!

但是你知道CPU有多少苦水吗? 且听 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 就是这个问题的一个解决方案:让用户和最接近自己的服务器交互,从而减少网络上报文的传输时间。

相比大家对CPU , 内存 ,硬盘, 网络的性能都有个基本的概念。我也是最近才了解到的,难怪大佬们都说 计算机组成原理很重要,不懂这些真的很难理解多线程,网络请求里面的一些问题。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

DBA 的那些事

      说起DBA,全称是Database Administrator,不是Doctor of Business Administration,千万不要误解...

1250
来自专栏H2Cloud

H2Engine服务器引擎介绍

H2Engine服务器引擎介绍 简介   H2Engine服务器引擎架构是轻量级的,与其说是引擎,个人觉得称之为平台更为合适。因为它封装的功能非常精简,但是提供...

5758
来自专栏ytkah

多客服功能终于也向所有微信认证的订阅号开放了

  多客服功能支持多人同时为一个公众号提供客服服务,经过半年多仅对认证服务号开放后,现在终于也向所有微信认证的订阅号开放了,所有微信认证的服务号和订阅号可以在“...

4056
来自专栏李成熙heyli

教你如何读webpack2中文文档

经过一个多月的奋战,webpack2的中文文档已经翻译好大部份,并且完成了核心内容“概念”和“指南”部份的校对。 这份文档比react, vue之类的文档都要庞...

24710
来自专栏云计算

云计算领域中你需要知道的 52 个术语

你觉得你已经对云服务的所有东西了如指掌了吗?那么,来看一下这份由云服务相关的术语、短语、工具和服务提供商组成的列表来确保你确实做到了这一点吧。

2929
来自专栏about云

openstack【juno】入门高级篇:为何你的实例ping不通外网【详述】

问题导读 1.本文解决ping通外网的思路是什么? 2.如何实现ping通外网? 3.ping域名bad address该如何解决? 前面是概述,这里给大家...

3426
来自专栏北京马哥教育

专为设计师而写的GitHub快速入门教程

在互联网行业工作的想必都多多少少听说过GitHub的大名,除了是最大的开源项目托管平台,许多企业也都是用GitHub来协同开发工作,当然我们彩程也是其中之一。笔...

3846
来自专栏互联网研发闲思录

手机QQ公众号亿级消息实时群发架构

编者按:高可用架构分享及传播在架构领域具有典型意义的文章,本文由孙子荀分享。转载请注明来自高可用架构公众号 ArchNotes。

2334
来自专栏Bug生活2048

告别单调工作系列——利用python「拯救」漂亮妹子

在进入正题前想聊下这位漂亮妹子「不要想多了,只是聊聊漂亮妹子的工作」,这位妹子虽然苦恼,但她做这样的事情已经一年多了,可谓毅力可嘉,有时候我就会觉得很奇怪,为什...

952
来自专栏北京马哥教育

面向容器技术资源调度关键技术对比

摘要:本文以资源分配理念:拍卖、预算、抢占出发,引出Borg、Omega、Mesos、Kubernetes架构、数据、API的特点比较。然后梳理资源共享各种不同...

4037

扫码关注云+社区

领取腾讯云代金券