0

谁能提供一个系统示例,其中系统的单个子组件的性能提高 x% 会导致整个系统的整体性能提高 Ax%(其中 A>1)?换句话说,系统中的局部优化能否产生积极的乘数效应?

我本可以发誓我过去曾遇到过这样的绩效乘数效应,但在我的一生中,我什至无法构建这种情况的假设示例。

4

2 回答 2

2

我所知道的在软件性能(没有不同的硬件)方面获得乘数效应的唯一方法是利用阿姆达尔定律,它只是说如果你让某件事花费更少的时间,它就会更快。(男孩,这很深。)如果您将软件花费的时间减少 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 倍!

这是一个示例,其中速度复合放大效果产生了 730 倍的加速。

于 2012-07-19T11:41:52.840 回答
1

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

于 2012-07-18T21:55:01.797 回答