不奢望岁月静好 只希望点滴积累

0%

如何提高性能(第4讲)

基本概念:
响应时间: 执行程序需要花费的时间
吞吐率: 一定时间内、可以执行的指令

性能一般定义为: 1/响应时间

计算机的计时单位: cpu时钟

虽然时间是衡量性能的标准、但是也有很大的差异

  1. 时间不准 应该参与比较的是刨除了io和cpu切换之外的实际CPU时间(user + sys)
  2. 就算拿到cpu时间也不一定可以比较 CPU满载运行时、可能会降频
    此外、还会受到主板、内存等的硬件影响

程序的cpu执行时间 = cpu时钟周期数 x 时钟周期时间
cpu 时钟周期时间越小、散热的压力也就越大
cpu时钟周期数 = 指令数 x cpi x Clock Circle Time
cpi : 每条指令的平均时钟周期数 Cycles Per Instruction

时钟周期时间: 取决于硬件
CPI: 取决于一条指令需要多少CPU周期、
指令数: 代表程序执行需要多少指令、用哪些指令

功耗 ~= 1/2 x 负载电容 x 电压的平方 x 开关频率 x 晶体管数量

1
2
3
4
所以: 
1.为了提升性能、需要增加晶体管数量, 同样面积、就要把体积造的小、 就是提升`制程`
2.但是 功耗增加太多、会导致CPU散热跟不上、就需要降低电压、
而功耗是和电压的平方成正比的、意味着电压下降到原来的 1/5 、功耗就会变成原来的 1/25.

提升计算机性能的方式

1
2
3
4
5
6
7
8
9
10
1. 摩尔定律: 增加晶体管数量(主频)
2. 并行原理: 多CPU
3. 加速大概率事件: gpu替代cpu
4. 通过流水线提升性能: 把cpu执行指令的过程细分
5. 通过预测提高性能: 分支和冒险, 局部性原理

应用:
加速大概率事件: 缓存(内存、CDN缓存)
流水线: 并发编程、异步编程、音频播放器边放边缓冲
预测: 下一页预加载、cdn预热、指令预加载