Appearance
题目
假定基准程序 A 在某计算机上的运行时间为 100 秒,其中 90 秒为 CPU 时间,其余为 I/O 时间。若 CPU 速度提高 50%,I/O 速度不变,则运行基准程序 A 所耗费的时间是( )。
错因
A
把"提高 50%"误算成"减半"。如果 CPU 时间从 90s 减到 45s(减一半),加上不变的 I/O 10s,总时间正好 55s。但**"提高 50%"指的是速度变 1.5 倍**,对应时间变成原来的 ,不是 。
B
只看 CPU 时间:"90 秒提速 50%" 错算成 60 秒,忘了加 I/O 时间。Amdahl 公式里"不能优化的部分必须照原样加回去",I/O 那 10 秒一秒都没省下,最后一定要加上。
C
把"提速 50%"理解成"时间减少 50%"——这是把"速度提高百分比"和"时间减少百分比"混了。两者不是同一个比例:
- 速度 ×1.5 → 时间 ÷1.5(约减 33%)
- 时间 ÷2(减 50%) → 速度需要 ×2(提高 100%)
按"减 50%"算 CPU 时间 = 45s,加 I/O 20s(也错算)= 65s。无论怎么凑,65s 都是混淆比例的产物。
总解析
核心公式(Amdahl 定律的常见形式):
题目中:
| 部分 | 原时间 | 加速比 | 新时间 |
|---|---|---|---|
| CPU(可优化) | 90 s | 1.5(提速 50%) | s |
| I/O(不可优化) | 100 − 90 = 10 s | 1(不变) | 10 s |
关键易错点:
- "速度提高 X%" ⟹ 速度乘以 (1 + X%),不是直接除以 X% 或减去 X%
- 时间减少比例 ≠ 速度提高比例:速度 ×k ⟹ 时间 ÷k;速度 ×1.5 时,时间只减 1/3 而非 1/2
- 不能优化的部分必须加回:本题里 10 秒 I/O 一点都没省,最终时间只能 ≥ 10s
Amdahl 定律的直觉:再快的 CPU 也救不了 I/O 慢——这是后续多数体系结构题(流水线加速比、并行加速比)都要用到的"系统瓶颈"思想。
最终答案是 D(70 s)。