IT业和性能优化工作的“法律法规”。
一、帕累托法则
1. 定义
帕累托法则,即:80/20 法则、关键少数法则、二八定律。
变量分布不均匀,20% 的因素操控着80% 的局面。
2. 意义
| 应用场景 | 帕累托法则内容 | 指导意义 |
|---|---|---|
| 应用程序的使用 | 80%的用户使用集中在大约20%的功能模块 | 对常用的模块进行充分优化 |
| 程序代码开发时间的分配 | 80%的开发时间往往花费在最精髓的20%代码上 | 需要合理有序地规划好开发时间 |
| 程序代码的维护 | 80%的代码演进和改动发生在大约20%的代码上 | 需要对最常改动的少部分代码尽量熟悉 |
| 程序代码的修正和纠错 | 80%的错误发生在大约20%的代码上 | 代码修复和纠错时要重点修复最容易产生BUG的代码 |
| 客户流量的时间分布 | 80%的流量将在总时间段的特定20%内发生 | 应用程序设计和部署时,要充分考虑客户访问峰值和空闲时段 |
| 程序代码的优化 | 80%的时间是在运行大约20%的代码 | 发现少数重点代码并做优化 |
优先优化最值得优化的代码,则只要投入差不多20%的努力就可以获得80%的性能优化产出,享受最大的投入产出比。
二、阿姆达尔定律
1. 定义
阿姆达尔定律,本是用来衡量处理器进行并行处理时总体性能的提升度。
科学计算中用多处理器进行并行加速时,总体程序受限于程序所需的串行时间百分比。
在这种情况下,改进程序本身的串行算法可能比用多核处理器并行更有效。
2. 意义
- 优先加速占用时间最多的模块,这样可以最大限度的提升加速比。
- 对一个性能优化计划可以做出准确的效果预估和整个系统的性能预测。
三、利特尔法则
1. 定义
利特尔法则,在一个稳定的系统中,长期的平均客户人数(N)等于客户抵达速度(X)乘以客户在这个系统中平均处理时间(W),即:N=XW。
如果这个状态稳定,即:我们的系统处理速度恰好赶上客户到达速度,一方面系统没有空闲,另一方面客户也不需要排队等待。
否则,访问速率加倍时,要么保持系统容量不变,把客户的处理时间减半,即缩短客户滞留在系统的时间来适应此要求;要么维持处理时间不变,扩大系统容量来适应。
2. 意义
- 帮助我们设计性能测试的环境。
- 帮助我们验证测试结果的正确性。