Performance: Faster or Fast?

Published on

TL;DR

When describing the performance of systems, always prefer terms which are unambigious.

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).

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).

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

← Back to Writings