理解高并发(20).大白话阿姆达尔定律
来源:互联网 发布:淘宝服装模特摄影 编辑:程序博客网 时间:2024/06/08 19:46
技术来源于生活,技术又改变了生活。
从生活中的例子说起
要完成拖地和烧开水这么一个工作, 假设烧开水需要花费 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数 提升性能。
阅读全文
0 0
- 理解高并发(20).大白话阿姆达尔定律
- 简单粗暴理解【阿姆达尔定律】
- 高并发的简单理解
- 理解高并发(1).序言
- 深入理解高并发程序设计
- 大白话讲解并发控制的悲观锁与乐观锁 / 高性能 MySQL 笔记
- 【并发】Amdahl's Law 阿姆达尔定律
- Java并发系列-28、阿姆达尔定律
- 理解高并发(2).我对并发编程的理解
- 我对高并发的理解
- 理解高并发(4).死锁监测方法
- 理解高并发(8).可重入锁RetreenLock用法
- 理解高并发(12).限定并发个数_semaphore信号量
- 《Java高并发程序设计》学习 --1.3有关并行的两个重要定律
- 高斯定律
- Amdahl 定律 (阿姆达尔定律)
- 大白话
- CAP定律理解
- 51nod1265判断四点共面
- 【github myLocker】select监听多个fd,互斥锁保护终端交互
- 设计模式之---命令模式
- CSS中关于触发BFC
- EasyDSS高性能流媒体服务器前端重构(二) webpack + vue + AdminLTE 多页面提取共用文件, 优化编译时间
- 理解高并发(20).大白话阿姆达尔定律
- 机器学习第九课(bagging,随机森林,样本不均衡)
- 各大公司对于java求职者的要求,你值得一看
- Thinkphp 模型->区间查询
- Test...
- 抽象类和接口
- 测试啊
- 读写文件时00 0A与80 0A的bug
- MyBatis + maven org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):