On Thu, 31 May 2007, Andrew Haley wrote:

No.  Speed is always measured in reciprocal units of time: s^-1.
A program that runs in 10 seconds has a speed of 0.1 s^-1.  Thus, 200%
is (0.1 * 200/100) s^-1 faster, giving a speed of 0.3 s^-1.

Um, 0.1 * 200/100 = 0.2.

Amdahl's Law says:

  speedup = t_old / t_new

Yet people often express it as a percentage, which is confusing, as we've just seen. They write "1.2x faster" as "20% faster" and "3x faster" as "200% faster".

Another performance measure is reduction in execution time:

  reduction = 1 - (t_new / t_old)

That is more natural to express as a percentage. But it's usually not what you want -- it's not what most people mean intuitively when they say "X is faster than Y" by a particular amount.

Growth of things is often expressed as a percentage, eg. saying "my wealth is 200% larger than last year" is fairly clear as meaning "3x larger". It's clear because there's only one possible measurement: size. That's why people use it in finance. But when you're dealing with how fast programs run, because there are two possible measures ("speedup" and "reduction") a percentage is much less clear.

To confuse things further, if you use percentage for speedup, the two measures give very similar results, *for small performance improvements*. For example:

  t_old = 100s
  t_new = 90s
  speed-up = 1.11 (sometimes strangely written as 11%)
  reduction = 10%

But they diverge as the performance improvements get better. I once saw a talk in which the speaker said he had sped up a system by 75%. He really meant he had reduced the execution time by 75%, which meant it was running 4x faster. But I think everyone assumed a 1.75x speed-up until I asked for a clarification. Since this "talk" was actually a thesis defense I think my question helped him significantly :)

It's amazing how much academic work doesn't make it clear what they mean by "10% faster". And the responses to this thread show how confusing percentages are. I encourage everyone to use Amdahl's law for speed-up and avoid percentages when talking about program performance. If you say "I made it 3x faster" no-one will ever be confused.

Nick

Reply via email to