Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Latency numbers every programmer should know 计算机中的延迟对比

Latency numbers every programmer should know 计算机中的延迟对比

作者头像
西湖醋鱼
发布于 2021-12-01 02:21:41
发布于 2021-12-01 02:21:41
65800
代码可运行
举报
运行总次数:0
代码可运行

每个编程者都应该知道的延迟:(~2012年的性能)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Latency Comparison Numbers (~2012)
----------------------------------
L1 cache reference                           0.5 ns
Branch mispredict                            5   ns
L2 cache reference                           7   ns                      14x L1 cache
Mutex lock/unlock                           25   ns
Main memory reference                      100   ns                      20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy             3,000   ns        3 us
Send 1K bytes over 1 Gbps network       10,000   ns       10 us
Read 4K randomly from SSD*             150,000   ns      150 us          ~1GB/sec SSD
Read 1 MB sequentially from memory     250,000   ns      250 us
Round trip within same datacenter      500,000   ns      500 us
Read 1 MB sequentially from SSD*     1,000,000   ns    1,000 us    1 ms  ~1GB/sec SSD, 4X memory
Disk seek                           10,000,000   ns   10,000 us   10 ms  20x datacenter roundtrip
Read 1 MB sequentially from disk    20,000,000   ns   20,000 us   20 ms  80x memory, 20X SSD
Send packet CA->Netherlands->CA    150,000,000   ns  150,000 us  150 ms

Notes
-----
1 ns = 10^-9 seconds
1 us = 10^-6 seconds = 1,000 ns
1 ms = 10^-3 seconds = 1,000 us = 1,000,000 ns

Credit
------
By Jeff Dean:               http://research.google.com/people/jeff/
Originally by Peter Norvig: http://norvig.com/21-days.html#answers

Contributions
-------------
'Humanized' comparison:  https://gist.github.com/hellerbarde/2843375
Visual comparison chart: http://i.imgur.com/k0t1e.png

更为形象化:

更为可读的对比:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Lets multiply all these durations by a billion:

Magnitudes:

### Minute:
    L1 cache reference                  0.5 s         One heart beat (0.5 s)
    Branch mispredict                   5 s           Yawn
    L2 cache reference                  7 s           Long yawn
    Mutex lock/unlock                   25 s          Making a coffee

### Hour:
    Main memory reference               100 s         Brushing your teeth
    Compress 1K bytes with Zippy        50 min        One episode of a TV show (including ad breaks)

### Day:
    Send 2K bytes over 1 Gbps network   5.5 hr        From lunch to end of work day

### Week
    SSD random read                     1.7 days      A normal weekend
    Read 1 MB sequentially from memory  2.9 days      A long weekend
    Round trip within same datacenter   5.8 days      A medium vacation
    Read 1 MB sequentially from SSD    11.6 days      Waiting for almost 2 weeks for a delivery

### Year
    Disk seek                           16.5 weeks    A semester in university
    Read 1 MB sequentially from disk    7.8 months    Almost producing a new human being
    The above 2 together                1 year

### Decade
    Send packet CA->Netherlands->CA     4.8 years     Average time it takes to complete a bachelor's degree

参考来源:https://gist.github.com/jboner/2841832

保持更新;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用cProfile等工具来提高python的执行速度
摘要: 众所周知,python相较于其它语言速度较慢,但是我们可以通过优化的方法来提升效率。 本文假定你已经十分熟悉Python。 众所周知,Python是一种解释性的语言,执行速度相比C、C++等语言十分缓慢;因此我们需要在其它地方上下功夫来提高代码的执行速度。 首先需要对代码进行分析。 代码分析 傻乎乎地一遍又一遍地检查代码并不会对分析代码的执行时间有多大帮助,你需要借助一些工具。 先看下面这段程序: """Sorting a large, randomly generated string and
小莹莹
2018/04/23
1.5K0
使用cProfile等工具来提高python的执行速度
Redis错误配置详解
Redis提供了许多提高和维护高效内存数据库使用的工具。在无需额外配置应用层的前提下,Redis独特的数据类型、指令和命令调优就可以满足应用的需求,但是错误的配置,更确切的说那些机外设备可能导致操作麻烦和性能问题。虽然导致了一些令人头疼的问题,但是解决方案是存在的,而且解决方案可能比我们预期的简单。 本系列文章介绍了使用Redis时遇到的一些令人头疼的问题,以及该解决这些问题。这些内容基于我们在运行上千个Redis数据库实例时的真实经历。 复制缓冲区限制 复制缓冲区主从服务器同步数据时保存数据的内存区域。在
CSDN技术头条
2018/02/07
9270
饿了么的异地多活架构设计是什么样的?
饿了么技术团队花了1年多的时间,实现了业务的整体异地多活,能够灵活的在多个异地机房之间调度用户,实现了自由扩容和多机房容灾的目标。本文介绍这个项目的整体结构,还简要介绍实现多活的5大核心基础组件,为读者建立基本的概念模型,后续会有系列文章陆续介绍每个组件的实现细节。读者能够从中了解到做异地多活的大方向,为实现自己的异地多活,或者是容灾备份提供参考。
肉眼品世界
2020/11/17
1.8K0
饿了么的异地多活架构设计是什么样的?
大型互联网系统架构是如何设计的?
如果服务性能的增长与资源的增加是成比例的,服务就是可扩展的。通常,提高性能意味着服务于更多的工作单元,另一方面,当数据集增长时,同样也可以处理更大的工作单位。1
李红
2019/05/29
1K0
分布式系统的时间问题
1 什么是时间? 2 物理时间:墙上时钟 3 逻辑时钟:为事件定序 4 Turetime:物理时钟回归 5 区块链:重新定义时间 6 其他影响 6.1 NTP的时间同步 6.2 有限时间内的不可能性 6.3 延迟 6.4 租约 7 总结 8 参考文献
半吊子全栈工匠
2020/02/26
9550
运维锅总详解计算机缓存
本文从OSI每一层缓存介绍、常见开源中间件缓存举例、TCP/IP协议栈中的缓存机制、操作系统中的缓存、访问缓存数据的时间范围统计等方面对计算机中的缓存进行详细介绍。希望对您有所帮助!
锅总
2024/07/05
2000
运维锅总详解计算机缓存
计算机组成原理笔记(四)
内存是五大组成部分里面的存储器,我们的指令和数据,都需要先加载到内存里面,才会被CPU拿去执行。
luozhiyun
2020/03/19
8980
运维锅总详解计算机缓存溢出
缓存溢出(Cache Overflow)是指缓存达到其容量极限后无法存储新的数据项的情况。为了讲解缓存溢出及其应对方法,以下将分为理论讲解和具体例子两部分。
锅总
2024/07/11
3910
运维锅总详解计算机缓存溢出
计算机系统 Lecture 1:虚拟内存详解
因此,现代计算机系统通常把各种不同存储容量、存取速度和价格的存储器按照一定的体系组成多层结构,以解决存储器容量、存取速度和价格之间的矛盾。
Flowlet
2023/08/11
5030
计算机系统 Lecture 1:虚拟内存详解
计算机基础之计算机硬件系统
一.计算机硬件系统概述 所谓计算机硬件系统,就是指构成计算机看得见的,摸得着的实际物理设备。 常见的计算机硬件组成主要由下图各部件组成: 现代计算机的结构更复杂,包括多重总线。 简单打个比方,方便大家
用户1214487
2018/01/23
1.4K0
计算机基础之计算机硬件系统
Java开发人员常用的服务配置(Nginx、Tomcat、JVM、Mysql、Redis)
Nginx Nginx是一款由C语言编写的高性能、轻量级的HTTP和反向代理服务器,同时也是一款IMAP/POP3/SMTP服务器。 nginx.conf:Nginx核心配置文件,linux下默认安装在/etc/nginx/ # Nginx所用用户和组,window下不指定 user www-data; # 工作的子进程数量(通常等于CPU数量或者2倍于CPU) worker_processes auto; # pid存放文件 pid /run/nginx.pid; #
happyJared
2018/09/20
1.5K0
计算机组成原理 存储器概述,主存系统模型和RAM和ROM
由干制造工艺限制,很难在同一种存储器中都达到这些要求,三者不可兼得,为此采用分层(级)存储体系
onenewcode
2024/01/19
1.1K0
Linux中查看系统CPU、内存、磁盘、网卡、硬件槽信息的命令
linux查看系统的硬件信息,并不像windows那么直观,这里我罗列了查看系统信息的实用命令,并做了分类,实例解说。 查看系统信息 uname -a 显示系统名、节点名称、操作系统的发行版号、操作系统版本、运行系统的机器 ID 号 cpu lscpu命令,查看的是cpu的统计信息. blue@blue-pc:~$ lscpu Architecture:          i686            #cpu架构 CPU op-mode(s):        32-bit, 64-bit Byte Order:            Little Endian   #小尾序 CPU(s):                4               #总共有4核 On-line CPU(s) list:   0-3 Thread(s) per core:    1               #每个cpu核,只能支持一个线程,即不支持超线程 Core(s) per socket:    4               #每个cpu,有4个核 Socket(s):             1               #总共有1一个cpu Vendor ID:             GenuineIntel    #cpu产商 intel CPU family:            6 Model:                 42 Stepping:              7 CPU MHz:               1600.000 BogoMIPS:              5986.12 Virtualization:        VT-x            #支持cpu虚拟化技术 L1d cache:             32K L1i cache:             32K L2 cache:              256K L3 cache:              6144K 查看/proc/cpuinfo,可以知道每个cpu信息,如每个CPU的型号,主频等。 #cat /proc/cpuinfo processor    : 0 vendor_id    : GenuineIntel cpu family    : 6 model        : 42 model name    : Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz ..... 上面输出的是第一个cpu部分信息,还有3个cpu信息省略了。 内存 概要查看内存情况 free -m              total       used       free     shared    buffers     cached Mem:          3926       3651        274          0         12        404 -/+ buffers/cache:       3235        691 Swap:         9536         31       9505 这里的单位是MB,总共的内存是3926MB。 查看内存详细使用 # cat /proc/meminfo MemTotal:        4020868 kB MemFree:          230884 kB Buffers:            7600 kB Cached:           454772 kB SwapCached:          836 kB ..... 查看内存硬件信息 dmidecode -t memory # dmidecode 2.11 SMBIOS 2.7 present. Handle 0x0008, DMI type 16, 23 bytes Physical Memory Array     Location: System Board Or Motherboard ....     Maximum Capacity: 32 GB .... Handle 0x000A, DMI type 17, 34 bytes .... Memory Device     Array Handle: 0x0008     Error Information Handle: Not Provided     Total Width: 64 bits     Data Width: 64 bits     Size: 4096 MB ..... 磁盘 查看硬
菲宇
2022/12/02
4.7K0
Cgroup测试&CFS计算方法
首先,Linux把CGroup这个事实现成了一个file system,你可以mount。在我的Ubuntu 14.04下,你输入以下命令你就可以看到cgroup已为你mount好了。
mingjie
2022/05/12
1.1K0
个人计算机硬件设备配置介绍与选型参考
描述:在我们日常使用的计算机中除了需要有硬件支持,还需要要有软件支持,比如我们的操作系统; 在我们自己安装系统或者DIY笔记本电脑的时候需要购买一些PC的一些周边硬件,当然您需要对其有一个大致的了解,所以本篇文章给计算机小白们一个基础入门;
全栈工程师修炼指南
2022/09/28
3.3K0
个人计算机硬件设备配置介绍与选型参考
图解计算机的存储器金字塔
在计算机组成原理中的众多概念中,开发者接触得最多的还是内存、硬盘、虚拟内存、CPU 缓存这些概念。这些概念有一个更为抽象的表示 —— 存储器,它是冯 · 诺依曼计算机体系中的五大组件之一,用于存储程序和数据。
用户9995743
2022/12/22
8250
图解计算机的存储器金字塔
多路径软件multipath.conf配置详解
Multipath简称为多路径访问,主要功能就是和存储设备一起配合实现三大功能: 1. 故障的切换和恢复 2. IO流量的负载均衡 3. 磁盘的虚拟化
孙杰
2019/10/29
8.6K0
SeaweedFS
seaweedfs是一个非常优秀的由 golang 开发的分布式存储开源项目。它是用来存储文件的系统,并且与使用的语言无关,使得文件储存在云端变得非常方便。
一滴水的眼泪
2020/09/21
6.7K0
SeaweedFS
24张图7000字详解计算机中的高速缓存
  缓存又叫高速缓存,是计算机存储器中的一种,本质上和硬盘是一样的,都是用来存储数据和指令的 。它们最大的区别在于读取速度的不同。程序一般是放在内存中的,当CPU执行程序的时候,执行完一条指令需要从内存中读取下一条指令,读取内存中的指令要花费100000个时钟周期(缓存读取速度为200个时钟周期,相差500倍),如果每次都从内存中取指令,CPU运行时将花费大量的时间在读取指令上。这显然是一种资源浪费。
嵌入式与Linux那些事
2021/04/20
1.8K0
计算机组成原理:4. 存储器
地址线和数据线共同来反应存储芯片的容量,比如地址线 10 根,数据线 4 根,芯片容量为 2^{10} \times 4 = 4 K位。
浪漫主义狗
2023/03/23
1.9K0
计算机组成原理:4. 存储器
相关推荐
使用cProfile等工具来提高python的执行速度
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验