效能、功耗與能量

加速比(speedup)

你找到一條更快的上班路線。舊路要 60 分鐘;新路要 40 分鐘。新路好多少?你做除法:60 除以 40 是 1.5,所以新路快 1.5 倍——加速比是 1.5。加速比就是這個「舊時間比新時間」的比值,它是表達一項改進到底幫了多少最乾淨的方式,遠比「快很多」這種含糊說法清楚。

正式地說,加速比等於改進前的執行時間除以改進後的執行時間。如果一個程式原本要 100 秒、現在要 25 秒,加速比就是 100/25 = 4——它快了四倍。注意方向:改進後的時間放在分母,所以加速比越大代表時間越少。人們有時會把它和百分比搞混:加速比 4 代表時間減少了 75%,而不是能乾淨對應到日常用語的「快 400%」,所以最安全的做法是直接報比值。

加速比是 Amdahl 定律說話所用的語言,這也是它最重要的誠實教訓。如果你只加速了程式的一部分,你沒碰到的那部分會限制整體增益。把佔執行時間 40% 的某段加速兩倍,你不會得到整體 2 倍的加速比——你得到的是 1 除以(0.6 加上 0.4/2),大約 1.25。這就是為什麼「讓常見情況變快」很重要:你實際能拿到的加速比,由你改進了總時間中多大一片決定,而非由你把那片改進得多誇張決定。

原本執行時間 100 秒。你最佳化了其中佔 40 秒的一個常式,讓它快 4 倍,於是它降到 10 秒;另外 60 秒原封不動。新時間 = 60 + 10 = 70 秒,加速比 = 100/70 = 1.43——不是 4,因為只有 40% 的時間被加速了。

整體加速比受限於你改進的那一片比例——這正是 Amdahl 定律的核心。

對佔執行時間一小片的部分做出巨大加速,整體加速比卻只是微小。永遠要用佔總時間的比例加權,而且把加速比報成時間的比值,別用鬆散的百分比。

又称
relative performanceperformance ratio加速比效能比