从AMDAHL定律看优化

     Amdahl’s law的定义是:Amdahl's law states that the performance improvement to be gained from using some faster mode of execution is limited by the fraction of the time the faster mode can be used.

    

    简言之,性能改进和改进这部分代码的比例f和改进的程度s。speed up = 1/((1-f)+f/s)

    举个例子,拿吃饭来说,吃饭包括了吃米饭,吃菜,喝汤3个部分,比例分别是40%,40%,20% 。为了便于计算,我们假定一个人吃一次饭要100分钟,现在我们认为这个人吃饭太慢了,要求提升他的性能,我们让他学习快速喝汤法,通过刻苦学习,喝汤速度提高了100%,即原来需要20分钟喝汤,现在只需要10分钟。这样整体吃饭时间变为90分钟,提升了多少呢?

    解这个方程:(1/100)* (1+X%) = 1/90

    X=(100/90-1) = 11.11%

    如果用Amdal公式求解: 1/(80%*1+20%*1/(1+100%)) = 111.11%。这样一个100%提升的部件(喝汤过程的改进),整体上只获得了11.11%的提升。

 

    在并发处理中,每增加一个CPU core(从N增加到N+1),对于并行的部分的耗时可以从1/N降低到1/(N+1),但如果可并行的比例太低,则这种CPU的增加是没有价值的,因此要获得并发处理的特性,一定要扩大可并行的比例,减少同步,减少上下文切换。

    speed up = 1((1-f)+f/N),其中1-f为不可并行部分的比例,f为可并行部分的比例,N为CPU的core数。因此在并发程序上,scalability是非常重要的特性,可并行比例越大,scalability的表现就越好。

   

 

 

参考:

http://www.cs.iastate.edu/~prabhu/Tutorial/CACHE/amdahl.html

http://manio.org/progress-and-thoughts-of-amdahls-law-286.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值