Performance: Faster or Fast?
TL;DR
When describing the performance of systems, always prefer terms which are unambigious.
- Use “as fast as” speed ratios and “as long as” time ratios.
- Always use “faster” or “slower” when referring to speed, never time.
- When referring to time in percentage delta terms, explicitly state “time increased/decreased by X%”.
- Time ratio is
time_new / time_baseline
and speed ratio istime_baseline / time_new
.
Performance Language & Ambiguity
As part of my work on the Buck2 build system, I deal with performance analyses on a daily basis. It’s extremely important to use precise and consistent language when describing the performance of systems, so that there’s no ambiguity in its intepretation.
For example, a statement like “X is 50% faster” is ambiguous, as it can be interpreted in two ways: the speed was increased by 50% or the time was decreased by 50% (those are not equivalent). As another example, a statement like “X is 150% faster” is also amgiguous because it can be interpreted as either 50% or 150% faster.
“Faster” vs “As Fast As”
The terms faster/slower refer to the delta of the measurement against a baseline. Faster indicates a positive delta (i.e., 20% faster means +20% or +0.2x), while slower indicates a negative delta (i.e., 20% slower means -20% or -0.2x). For example, 20% faster means the new value is equal to 120% of the baseline.
“As fast as” refers to the ratio of the measurement against a baseline. For example, “1.2x as fast as” means that it’s “0.2x faster” (i.e., 20%). 1.2x can also be expressed as 120% in percentage terms. “As fast as” is also used when a measurement is lower as well, e.g., “0.8x as fast as”(i.e., “80% as fast as” or “20% slower”).
Speed vs Time
Time and speed are inversely proportional, so when time decreases, the speed increases. Crucially, a percentage time delta does not translate to the same percentage speed delta. For example, it’s incorrect to say that a 50% time reduction is the same as being 50% faster.
For example, if the time decreases by 50% (i.e., halved), that means the speed is twice as fast - i.e., “2x/200% as fast as” (or equivalently “100% faster”").
Calculating Time
Assume you have measured the baseline time (time_baseline
) and the new time (time_new
).
- The
time_ratio
is defined astime_new / time_baseline
- The
time_ratio_delta
is defined astime_ratio - 1.0
.
For example, with a time_baseline
of 100 seconds and time_new
of 80 seconds, the time ratio as 0.8x (80/100
), thus time ratio delta is -0.2x (0.8 - 1.0
). We could present this as “0.8x as long as”, “80% as long as” or “time decreased by 20%”.
Calculating Speed
Assume you have measured the baseline time (time_baseline
) and the new time (time_new
).
- The
speed_ratio
is defined astime_baseline / time_new
. - The
speed_ratio_delta
is defined asspeed_ratio - 1.0
.
For example, with a time_baseline
of 100 seconds and time_new
of 80 seconds, the speed ratio is 1.25x (100/80
), thus speed ratio delta is 0.25x (1.25 - 1.0
). We could present this as “1.25x as fast as”, “125% as fast as” or “25% faster”.
Note that a 20% decrease in time (i.e., 20s out of 100s) led to a 25% increase in speed. This becomes clear when we show the derivation of speed_ratio
which is the inverse of the time_ratio
.
speed_baseline = distance / time_baseline
speed_new = distance / time_new
speed_ratio = speed_new / speed_baseline
speed_new / speed_baseline = (distance / time_new) / (distance / time_baseline)
= (distance / time_new) * (time_baseline / distance)
= time_baseline / time_new