2021-04-21

1 篇文章 0 订阅
1 篇文章 0 订阅

关于阿姆达定律(Amdahl’ low)的一些故事

阿姆达尔定律是一个计算机科学界的经验法则,因IBM公司计算机架构师Gene Amdahl而得名。Gene Amdahl在1967年发表的论文中提出了这个重要定律。

参考书籍:书籍《深入理解Java虚拟机》第3版第438页

Gene Amdahl进行了一个富有洞察力的观察: 提升一个系统的一个部分的性能对整个系统有多大影响。这一观察被称为Amdahl’s Law(阿姆达尔定律):
英文公式为:    speed up = exe time old/exe time new
(注:这里的系统,可指计算机系统或别的什么系统)
Amdahl的系统改造加速比被定义成:
    系统加速比 = 使用增强措施时完成整个任务的性能 / 原完成整个任务的性能

当提升系统的一部分性能时,对整个系统性能的影响取决于:1、这一部分有多重要 2、这一部分性能提升了多少。

假设原来在一个系统中执行一个程序需要时间为 T o l d T_{old} Told,其中某一个部分占的时间百分比为 a a a,然后,把这一部分的性能提升 K K K倍。即这一部分原来需要的时间为 a T o l d aT_{old} aTold ,现在需要的时间变为 ( a T o l d ) / K (aT_{old})/K (aTold)/K。则整个系统执行此程序需要的时间变为:

     T n e w = ( 1 − a ) T o l d + ( a T o l d ) / K = T o l d [ ( 1 − a ) + a / K ] T_{new}=(1-a)T_{old}+(aT_{old})/K=T_{old}[(1-a)+a/K] Tnew=(1a)Told+(aTold)/K=Told[(1a)+a/K]
因此,系统性能提速的倍数为: S = 1 ( 1 − a ) + a / K S=\frac{1}{(1-a)+a/K} S=(1a)+a/K1

示例:

某个系统的某个部分的执行时间占总执行时间的70%,即 a = 0.7 a=0.7 a=0.7,这部分性能提升4倍( K = 4 K=4 K=4),则整个系统的性能提升为 1 / [ 0.3 + 0.7 / 4 ] = 2.11 1/[0.3+0.7/4]=2.11 1/[0.3+0.7/4]=2.11倍。

可以看出即使一个系统的主要部分性能提升了很多,整个系统的性能提升远远小于此部分的提升。

(我们可以把上面的例子极端化一下,即把那部分性能的提升从4倍改为到无穷大倍,即 K = ∞ K=∞ K=,这部分能瞬间就能执行完,则 S ∞ = 1 ( 1 − a ) = 1 ( 1 − 0.7 ) = 3.33 S_∞=\frac{1}{(1-a)}=\frac{1}{(1-0.7)}=3.33 S=(1a)1=(10.7)1=3.33倍,可见实际效果远小于 ∞ ∞ )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值