本文共 837 字,大约阅读时间需要 2 分钟。
想通过并发获得更好的性能,需要努力做好两件事情:
可伸缩性:当增加计算资源时(CPU/内存/存储容量/I/O带宽),程序的吞吐量或处理能力能相应地增加
Amdahl定律:在增加计算资源的情况下,程序在理论上能够实现最高加速比,这个值取决于程序中可并行组件与串行组件所占的比重:
最高加速比(F为串行执行的部分,N为处理器个数):seedup小于等于(1/(F+(1-F)/N))
利用率:加速比除以处理器数量
上下文切换:实际开销随平台的不同而变化,大多数通用处理器,相当于5000-10000个时钟周期,也就是几微秒
内存同步
阻塞
并发程序中,对可伸缩性的最主要威胁就是独占方式的资源锁
降低锁竞争程度:
减小锁的范围(快进快出)
减小锁的粒度:
避免热点域:
替代独占锁:
CPU没有充分利用:
对象池:对象能被循环使用,而不是由GC回收并在需要时重新分配;但要同步机制协调对象池数据结构的访问,通常对象分配的操作开销比同步的开销更低,所以不要用对象池!
转载地址:http://umkvb.baihongyu.com/