理解性能提升By阿姆达尔定律(Amdahl's law)
2018-06-03 13:45
274 查看
我们在进行系统优化完成后,怎么评估优化的效果呢?最简单的方式是测量系统优化后耗时和优化前耗时的比例,这也叫加速比S(Speed Up)。
阿姆达尔定律在理解性能优化具有重要指导意义。优化前系统总耗时To(old),优化后系统总耗时Tn(new),加速比S=To/Tn。
通过下面这张图理解:(α为待提速部分原来耗时比例)
S = To/Tn = 1 / (1-α)+α/k
当待优化部分提速无穷倍(k接近无穷大,不耗时间)时候,S = 1 / (1-α) , 也就是说,比如α=60%,如果系统中60%的部分能提速到不花时间,那么获得最高的加速比仍然只有1/0.4=2.5,系统才能提速2.5倍。也就是Amdahl's law的主要观点:要想显著加速整个系统,必须提升全系统大部分的速度。
我们在刻画并行程序的时候,理想情况是随着cpu核数增加,期望运行时间会线性下降。也就是说,期望线程数加一倍,运行时间就会减一半。
如图:
实际情况:
理想情况:
关键刻画性能提升的指标是加速比,旧时间/新时间,随着线程增加,时间对应减少,实际情况,随着线程增加,运行时间可能会增加,因为有了线程上下文切换的开销。
参考:
阿姆达尔定律: https://en.wikipedia.org/wiki/Amdahl%27s_law
加速比: https://en.wikipedia.org/wiki/Speedup
相关文章推荐
- 提升sqlite性能以及事务的简单理解
- 关于修改 commit_write 提升性能的一点理解
- JAVA NIO 新IO 分析 理解 深入 实例,如何利用JAVA NIO提升IO性能
- 提升java锁性能
- node性能提升,有关Cluset模块
- HHVM安装使用教程-高效的PHP运行环境提升PHP性能9倍以上
- javaScript--for循环的性能提升
- 性能测试指标的理解--cpu和load
- 在Firefox 58中,WebAssembly组件性能提升了10倍
- 提升Web应用程序性能的最佳实践
- 提升Android ListView性能的几个技巧
- PMU性能分析系列1 - 相关事件的理解 - Basic Performance Tuning Events
- HHVM 是如何提升 PHP 性能的?
- redis 性能优化优化提升之管道(pipeline)
- 收藏文章一篇:J2EE应用程序中的性能提升
- 提升性能 Java程序优化的一些最佳实践
- 使用异步HTTP提升客户端性能(HttpAsyncClient)
- 利用静态服务提升读取Activiti流程图的性能
- DB2 Load 性能大提升
- 0101-ArcPy:使用内存作为工作空间,提升地理处理工具性能