性能优化乘数

时间:2012-07-18 21:30:38

标签: optimization architecture micro-optimization

任何人都可以提供一个系统示例,其中x%的性能提升到系统的单个子组件会导致整个系统的Ax%(其中A> 1)的整体性能提升?换句话说,系统中的局部优化会产生正乘数效应吗?

我可以发誓过去曾经遇到过这样的表现倍增效应,但对于我的生活,我甚至无法构建这种情况的假设例子。

2 个答案:

答案 0 :(得分:2)

我知道在软件性能(没有不同的硬件)中获得乘数效应的唯一方法是利用Amdahl's Law,只是说如果你做的东西花费更少的时间就更快。 (男孩,那很深。) 如果您将软件的时间减少了一小部分X,那么您已经给它一个R = 1 /(1-X)的加速比。 例如,如果一个程序需要100秒,而你设法削减60秒,那么你需要40秒,这是100/40 =原来的2.5倍。

以下是X和R的关联方式:

X    R
0.0  1
0.1  1.11..
0.2  1.25
0.3  1.43..
0.4  1.66..
0.5  2
0.6  2.5
0.7  3.33..
0.8  5
0.9  10
0.99 100
1.0  inf

此外,这些影响复合。 如果将时间减少50%,则速度乘以2。 如果你得到结果,并将时间减少50%,速度再乘以2.

请注意,第二个50%仅为原始时间的25%。 第一次减少使第二次减小,增加了2倍!

Here's an example其中速度复合放大效果产生了730倍的加速。

答案 1 :(得分:1)

我能想到的唯一例子是在一个具有某种硬实时约束的系统中,例如:子组件执行时间过长,导致超时并在某种I / O接口中重新尝试。提高子组件的性能使其足够快以避免超时+重试,从而显着提高整体性能。想到的真实世界的例子是旧的skool磁盘控制器(在缓存等之前)和网络接口(超时导致数据包被重新发送等)。