in 操作系统 ~ read.

计算机操作耗时列表

计算机操作耗时列表

基本概念

  • CPU 主频

    主频2.6GHz,代表每秒钟的时钟周期为2.6G,意味着每秒可执行 2.6 * 2^9 条指令,即每条指令(一个时钟周期cycles)耗时 0.38 ns

  • 三级缓存

    每个CPU核心有独立的L1、L2缓存(on-chip,位于芯片),多个CPU核心共享L3缓存(off-chip,不在芯片上)。

    • L1缓存又分为i-cache(指令缓存)和d-cache(数据缓存),L1缓存通常只有32K/64KB
    • L2缓存能到256KB
    • L3则高达30MB
    • 内存高达数G

设备耗时表

设备事件 时钟周期(cycles) 耗时 相对耗时 倍数
1个时钟周期 1 0.38ns 1s
L1缓存访问 1-5(4) 0.5ns 1.5s
分支预测 5-15 5ns 13s 十倍
L2 缓存访问 5-20(8) 7ns 18.2s 十倍
L3 缓存访问 32 12.9ns 43s 百倍
Mutex lock/unlock 60 25ns 65s 百倍
内存随机访问 (8G/s) 200+ 120ns 6min 千倍
CPU上下文切换(系统调用) 2000+ 1.5us 65min 万倍
Send 2K bytes over 1 Gbps network 20us 14.4h 十万倍
SSD 随机读 150us 6day 百万倍
从内存中读取 1MB 的连续数据 250us 7.5day 百万倍
同一个中心的一个网络来回 (ping) 0.5ms 15day 百万倍
SSD读取 1MB 的连续数据 (1G/s) 1ms 1month 千万倍
HDD寻址 10ms 10month 千万倍
HDD读取 1MB 的连续数据 (50M/s) 20 ms 20month 亿倍
跨网络中心的一个网络来回 (ping) 150ms 12.5year 十亿倍
TCP 重传 3 s 317year 百亿倍

关于硬盘

SSD存取时间 = 访问时间 + 传输时间 = 150us + 1ms

HDD存取时间 = 寻址时间 + 旋转时间 + 传输时间 = 10ms + 5ms(5400转/min) + 20ms

总结

CPU -> 内存 -> SSD -> HDD -> 网络
纳秒 -> 微秒 -> 毫秒 -> 毫秒 -> 秒

磁盘与网络的耗时,需要依实际情况考虑,建在同一个局域网,网络带宽,磁盘带宽,都会有相应的影响,甚至创建网络连接时的耗时,协议耗时等等都可能有问题;

只能说,在大多数情况下,我们把磁盘快于网络作为政治正确。