Java 并发系列:阿姆达尔定律
阿姆达尔定律,给出定量的计算公式,计算CPU并行运算后的效率提升能力。
定义:
- T = 串行执行总时间
- B = 不可并行执行的时间
- T-B = 可并行执行的时间
- N = 线程或CPU的个数
- T(N) = 使用N个线程并行执行的总时间
则:
T(N) = B + (T(1)-B)/N
根据阿姆达尔定律,可以指导性能优化,分别对B,T-B进行优化。对于B,用因子O来描述优化的倍数,则采用O,N参数进行优化后的执行总时间为:
T(O,N) = B/O + (1-B/O)/N
优化加速比:
Speedup = 1/T(O,N)
利用这个结论,可以在做系统性能优化时,确定优化的重点和收益:我们应该重点优化串行部分还是并行部分?带来的性能提升是多少?