编程应该知道的操作延迟时间

记录系统等相关操作的时间,供在算法设计和架构设计中的时间延迟参考。

数据摘自《性能之巅——洞悉系统、企业与云计算》《大型网站架构技术—核心原理与案例分析》

注:在未提供机器配置的情况下,时间数据仅供比例参考,比较两个操作的轻重程度。

最新数据可参考:
http://www.eecs.berkeley.edu/~rcs/research/interactive_latency.html
总结:
     1)纳秒级操作:
          纳秒级:cpu计算cache访问
          10~100纳秒级:cpu访问内存
 
     2)微秒级操作:
           微秒级:内存读取1M数据
           百微秒级:
               (a)SSD读取1M数据
               (b)局域网ping 一台主机
               (c)Redis一次查询
 
     3)毫秒级操作
          毫秒级:机械硬盘读取1M数据
          10~100ms :
               (a) 广域网ping 一台主机
               (b)局域网数据库查询
 
     4)秒级操作
          访问一个网站
 
一 时间单位
单位
与秒对比

1 s

毫秒

1e-3   s

微妙

1e-6   s

纳秒

1e-9   s

皮秒

1e-12   s

 
二 系统延时
操作
耗时

1 cpu 周期

0.3 纳秒

L1 缓存访问

0.9 纳秒

L2 缓存访问

2.8 纳秒

L3 缓存访问

12.9 纳秒

主存访问(CPU访问DRAM

120 纳秒

固态硬盘IO

50~150 微妙

机械硬盘IO

1-10 毫秒

互联网:旧金山到纽约

40毫秒

互联网:旧金山到英国

81毫秒

互联网:旧金山到澳大利亚

183毫秒

TCP 包重传

1~3

OS虚拟化系统重启

4

SCSI 命令超时

30

硬件虚拟化系统重启

40

物理系统重启

5

 
三 常用操作响应时间

操作

响应时间

打开一个网站

几秒

数据库查询一条记录(有索引)

十几毫秒

机械磁盘一次寻址定位

4毫秒

机械磁盘顺序读取1MB数据

2毫秒

SSD磁盘顺序读取1MB数据

0.3 毫秒

从远程分布式缓存Redis读取一个数据

0.5 毫秒

从内存读取1MB数据

十几微妙

Java程序本地方法调用

微妙

网络传输2KB数据

1微妙

猜你喜欢

转载自shihlei.iteye.com/blog/2276438