理解高并发(20).大白话阿姆达尔定律

技术来源于生活,技术又改变了生活。

从生活中的例子说起
要完成拖地和烧开水这么一个工作, 假设烧开水需要花费 2分钟, 拖地需要2分钟, 各占总时间的50%。 为了赶时间,我发动老婆一块帮忙, 因为烧开水的时间不为人所能控制,因此增派人手能做的工作只能是打扫卫生, 此时完成整项工作可提升的速度为:
可提升效率倍数: 1/( 0.5 + 0.5/2) = 1.3 倍 , 总完成时长缩短到3分钟
人手增派到4人的话,
可提升的效率倍数: 1/ (0.5 + 0.5/4) = 1.6倍, 总完成时长2.5分钟

假设当增派的人手足够多时,最理想的情况下也只能是打扫卫生的时间为0, 最理想的可提升效率的倍数为:1/0.5 = 2倍,最理想的总完成时长为2分钟。
此时已是极限,如果需要再降低总时间,只能是想办法降低烧开水的时长了。

将该例子抽象出来形成公式为:
可提升效率倍数 = 1 / (烧开水所占时长比例 + 拖地所占时长比例 /工作者数)

从这个公式可以看出,能提升性能的几个指标:
  • 工作人手
人海战术,通过增加人手的方式,将可并行处理的工作分解。但是这会有个极限,当达到极限时,即使添再多的人对整体效率来说也是无济于事的。
反映到我们的编程模式里面就是通过增加cpu个数或是增加线程数提升性能。
  • 烧开水的时间
想办法降低烧开水的时间也能使整体性能得到提升。
反映到我们的编程模式里面就是尽量减少阻塞,减少串行执行的可能。


何谓阿姆达尔定律
看完上面的例子,阿姆达尔定律已基本清楚,他无非也是定义一套公式用来计算程序可提升的性能倍数。
可提升性能倍数 = 1/(串行执行时间比 + 并行执行时间比/cpu数)
通过优化1)串行执行时间比 2)增加cpu数 提升性能。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值