两个概念:
1.可改进比例:改进前,可改进部件的执行时间 除以 总时间
2.部件加速比:改进后,改进前的部件的执行件时间 除以 改进后部件的执行时间 (类比跑50米,花2秒后改进为1秒,加速比为2,也就是提高两倍)
例子:一个需要运行60秒的程序中有20秒的运算可以加速,那么他的 可改进比例就是 20/60,
现在假如 这个20秒可以提速为10秒,那么他的 部件加速比就是 20/10,比原本提高两倍
改进后的总执行时间 = 不可改进部分的执行时间 + 可改进部分改进后的执行时间 ,也就是 40 + 10 = 50
换算:(1 - 可改进比例)* 改进前总执行时间 + 可改进比例 * 改进前总执行时间 / (部件加速比) ,
也就是 (1 - 20/60) * 60 + 20/60 * 60 / (部件加速比)
等等于 40 + 20/(部件加速比) ==》 40 + 20 * 10 / 20 = 50
(也就是知道了改进前系统总执行时间,可改进比例【改进前此部件执行时间占整个系统总执行时间的百分之多少】,还有部件加速比【部件改进后的速度比改进前提高了多少倍】,就可以算出改进后系统的总执行时间 )
系统加速比 = 改进前的总执行时间 / 改进后的总执行时间 = 60/50 = 1.2
刚才已经求出 改进后的总执行时间,把时间抽出来合并一下【换算:】那里的等式,也就是
改进后的总执行时间 = 【(1 - 可改进比例) + (可改进比例/部件加速比) 】 * 改进前总执行时间
那么,系统加速比就为 :改进前的总执行时间 /【(1 - 可改进比例) + (可改进比例/部件加速比) 】 * 改进前总执行时间
也就是,系统加速比 = 1 / (1 - 可改进比例) + (可改进比例 / 部件加速比)
1 / [ (1 - 20/60 ) + 20/60 /(20/10) ] =1/ [40/60 + 10/60] = 1/[50/60] = 1.2
(也就是知道了可改进比例【改进前此部件执行时间占整个系统总执行时间的百分之多少】,还有部件加速比【部件改进后的速度比改进前提高了多少倍】,就可以算出 整个系统的加速比)
由系统加速比可以得出:当部件可改进比例为0时,系统加速比为1;当部件加速比趋于无穷大时,(可改进比例 / 加速比)就会趋于0,这时有
系统加速比 = 1 / (1 - 可改进比例)
所以可得到一个重要推论:如果只针对整个任务的一部分进行改进和优化,那么所获得的加速比不超过1 / (1 - 可改进比例)
网友评论