原文:Every
Programmer Should Know These Latency Numbers
L1 cache :………………………………………………..0.5ns
branch mispredict(转移、分支预测) : ……………..5ns
L2 cache :………………………………………………… 7ns
互斥锁\解锁 :…………………………………………….. 25ns
1k字节压缩(Zippy) : …………………………………….3000ns = 3us
在1Gbps的网络上发送2k字节 : ……………………….20,000ns = 20us
SSD随机读 :……………………………………………..150,000ns = 150us
从内存顺序读取1MB :…………………………………250,000ns = 250 us
同一个数据中心往返 :………………………………….500,000ns = 0.5ms
从SSD顺序读取1MB : …………………………………1,000,000ns = 1ms
磁盘搜索:…………………………………………………..10,000,000ns = 10ms
从磁盘里面读出1MB
: …………………………………..20,000,000ns = 20ms
### Latency numbers every programmer should know
L1 cache reference ......................... 0.5 ns
Branch mispredict ............................ 5 ns
L2 cache reference ........................... 7 ns
Mutex lock/unlock ........................... 25 ns
Main memory reference ...................... 100 ns
Compress 1K bytes with Zippy ............. 3,000 ns = 3 μs
Send 2K bytes over 1 Gbps network ....... 20,000 ns = 20 μs
SSD random read ........................ 150,000 ns = 150 μs
Read 1 MB sequentially from memory ..... 250,000 ns = 250 μs
Round trip within same datacenter ...... 500,000 ns = 0.5 ms
Read 1 MB sequentially from SSD* ..... 1,000,000 ns = 1 ms
Disk seek ........................... 10,000,000 ns = 10 ms
Read 1 MB sequentially from disk .... 20,000,000 ns = 20 ms
Send packet CA->Netherlands->CA .... 150,000,000 ns = 150 ms
Assuming ~1GB/sec SSD
![Visual representation of latencies](http://i.imgur.com/k0t1e.png)
Visual chart provided by [ayshen](https://gist.github.com/ayshen)
Data by [Jeff Dean](http://research.google.com/people/jeff/)
Originally by [Peter Norvig](http://norvig.com/21-days.html#answers)
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
分享到:
相关推荐
算法可以用任何编程语言表示,可以像一系列基本操作一样简单,也可以像涉及不同数据结构和逻辑的多步骤过程一样复杂。 算法的主要目标是接收输入、处理它并提供预期的输出。算法可以根据时间和空间复杂性、用于解决...
我对一些代码挑战的解决方案以及每个程序员都应该知道的一些数据结构、设计模式、算法。 解决办法去。 解决办法去。 常用数据结构,转。 常用设计模式,转至 . 常用算法,转。 公司相关问题,转至。 更多关于这个 我...
1.2.10 DBA与程序员 第2章 数据表的创建和管理 2.1 数据类型 2.1.1 整数类型 2.1.2 数值类型 2.1.3 字符相关类型 2.1.4 日期时间类型 2.1.5 二进制类型 2.2 通过SQL语句管理数据表 2.2.1 创建数据...
在题目的深度上,本书由浅入深、庖丁解牛式地分析每一个题目,并提炼归纳,同时,引入例子与源代码、时间复杂度与空间复杂度的分析,这些内容是其他同类书籍所没有的。本书结构合理,条理清晰,根据真题所属知识点...
1.2.10 DBA与程序员 第2章 数据表的创建和管理 2.1 数据类型 2.1.1 整数类型 2.1.2 数值类型 2.1.3 字符相关类型 2.1.4 日期时间类型 2.1.5 二进制类型 2.2 通过SQL语句管理数据表 2.2.1 创建数据...
基本操作:针对每种数据结构,定义了一系列基本的操作,包括但不限于插入、删除、查找、更新、遍历等,并分析这些操作的时间复杂度和空间复杂度。 算法: 算法设计:研究如何将解决问题的步骤形式化为一系列指令,...
1.2.10 DBA与程序员 第2章 数据表的创建和管理 2.1 数据类型 2.1.1 整数类型 2.1.2 数值类型 2.1.3 字符相关类型 2.1.4 日期时间类型 2.1.5 二进制类型 2.2 通过SQL语句管理数据表 2.2.1 创建数据...
1.2.10 DBA与程序员 第2章 数据表的创建和管理 2.1 数据类型 2.1.1 整数类型 2.1.2 数值类型 2.1.3 字符相关类型 2.1.4 日期时间类型 2.1.5 二进制类型 2.2 通过SQL语句管理数据表 2.2.1 创建数据...
1.2.10 DBA与程序员 第2章 数据表的创建和管理 2.1 数据类型 2.1.1 整数类型 2.1.2 数值类型 2.1.3 字符相关类型 2.1.4 日期时间类型 2.1.5 二进制类型 2.2 通过SQL语句管理数据表 2.2.1 创建数据...
程序员面试刷题的书哪个好 数据准备为数据科学使用-SAS ...说明如何从各种数据源和数据结构创建一个每主题一行的数据集市 了解时间序列分析数据准备的概念和注意事项 说明如何使用各种 SAS 程序和 SAS Ente
我们知道,虽然每个人都懂得英语的语法与基本类型,但是对于同样的题目, 每个人写出的作文,水平却高低不一。程序设计也和写英语作文一样,虽然程序 员都懂得语言的语法与语义,但是对于同样的问题,程序员写出来的...
但是如果你不懂的话,我可以说很多程序员工资都超2w了,他也不知道怎么弄这个,甚至不知道居然还要用到这个。 所以本资源要价很高。来自真实源码。 一个服务器端程序的运行,少不了两个必须的工具。 一、访问量与...
基本操作:针对每种数据结构,定义了一系列基本的操作,包括但不限于插入、删除、查找、更新、遍历等,并分析这些操作的时间复杂度和空间复杂度。 算法: 算法设计:研究如何将解决问题的步骤形式化为一系列指令,...
基本操作:针对每种数据结构,定义了一系列基本的操作,包括但不限于插入、删除、查找、更新、遍历等,并分析这些操作的时间复杂度和空间复杂度。 算法: 算法设计:研究如何将解决问题的步骤形式化为一系列指令,...
本书在数据结构的每个知识点上均给出了多个实验项目,且在每个实验项目中包括实验项目、任务分析、程序构思、源程序、测试数据、注意事项及思考问题等。在最后一章中给出了两个实际问题,着重分析了解决的思路、模块...
python基于ARIMA时间序列的销量预测模型全部数据.zipARIMA模型提供了基于时间序列理论,对数据进行平稳化处理(AR和MA过程)、模型定阶(自动差分过程)、参数估计,建立模型,并对模型进行检验。 在Python中...
2)多列数据显示:支持多列数据显示,程序员甚至可以设置每一列的颜色和字体,以及整个数据显示框的外观,从而美化组件的外观。 3)即时拼音过滤:组件内部可以根据程序员的设置自动生成字段的拼音计算字段。普通...
发短信或收到的短信都包含原始码,帮助程序员分析PUD串. 软件包含两个附加文件,一个是config.ini配置文件,一个是电话簿文件, 配置文件:主要是设置串口相关的参数及短信息的中心号码.方便下次使用时无需重新设置. 电话...
在接收端,每收到一个无差错的帧,就把这个帧交付上层并向发送端发送确认。若该帧有差错,就丢弃,其他什么也不做。 其他细节: 停止等待协议为了可靠交付,需要对帧进行编号,由于每次只发送一帧,所有停止等待...