java

位置:IT落伍者 >> java >> 浏览文章

Java程序性能优化-Amdahl定律


发布日期:2019年07月03日
 
Java程序性能优化-Amdahl定律

Amdahl定律

Amdahl定律是计算机科学中非常重要的定律它定义了串行系统并行化后加速比的计算公式和理论上限

加速比定义加速比=优化前系统耗时/优化后系统耗时

所谓加速比就是优化前的耗时与优化后耗时的比值加速比越高表明优化效果越明显

Amdahl定律给出了加速比与系统并行度和处理器数量的关系设加速比为Speedup系统内必须串行化的程序比重为FCPU处理器数量为N则有

根据这个公式如果CPU处理器数量趋于无穷那么加速比与系统的串行化率成反比如果系统中必须有%的代码串行执行那么系统的最大加速比为

假设有一程序分为以下步骤执行每个执行步骤花费个时间单位其中只有步骤和步骤可以进行并行步骤必须串行如图所示在全串行的情况下系统合计耗时个时间单位

串行工作流程

若将步骤和步骤并行化假设在双核处理上则有如图所示的处理流程在这种情况下步骤和步骤的耗时将为个是单位故系统整体耗时为个时间单位根据加速比的定义有

加速比=优化前系统耗时/优化后系统耗时=/=

或者前文中给出的加速比公式由于个步骤中个步骤必须串行因此其串行化比重为/=即F=且双核处理器的处理器个数N为代入公式得

加速比=/(+()/)=

双核处理上的并行化

在极端情况下假设并行处理器个数为无穷大则有如图所示的处理过程步骤和步骤的处理时间趋于即使这样系统整体耗时依然大于个时间单位即加速比的极限为/=

极端情况下的并行化

使用加速比计算公式N趋于无穷大有Speedup=/F且F=故有Speedup=

由此可见为了提高系统的速度仅增加CPU处理器的数量并不一定能起到有效的作用需要从根本上修改程序的串行行为提高系统内可并行化的模块比重在此基础上合理增加并行处理器数量才能以最小的投入得到最大的加速比

注意根据Amdahl定律使用多核CPU对系统进行优化优化的效果取决于CPU的数量以及系统中的串行化程序的比重CPU数量越多串行化比重越低则优化效果越好仅提高CPU数量而不降低程序的串行化比重也无法提高系统性能

返回目录Java程序性能优化让你的Java程序更快更稳定

编辑推荐

Visual C++音频/视频技术开发与实战

Oracle索引技术

ORACLEG数据库开发优化指南

上一篇:Java程序性能优化-木桶原理与性能瓶颈

下一篇:Java程序性能优化-设计调优