任何人都可以提供一个系统示例,其中x%的性能提升到系统的单个子组件会导致整个系统的Ax%(其中A> 1)的整体性能提升?换句话说,系统中的局部优化会产生正乘数效应吗?
我可以发誓过去曾经遇到过这样的表现倍增效应,但对于我的生活,我甚至无法构建这种情况的假设例子。
答案 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磁盘控制器(在缓存等之前)和网络接口(超时导致数据包被重新发送等)。