Well ... as a working performance engineer, I'm going to defend
microbenchmarks as virtually (no pun intended) the *only* way to
improve performance over all for the Ruby interpreter, coupled of
course with profiling said interpreter and careful design of the data
structures the interpreter must maintain during execution.
Benchmarking for internal purposes is fine. What the shootout does is
something different entirely. Have you ever really *looked* at the code
they run for the various different versions? Some of it is so blatantly
tweaked to run faster on the benchmark that it's not funny. (There's a
Perl example I looked at a couple of years ago that *deliberately* had
obfuscated code because the obfuscated code took advantage of internals
that you're not supposed to use and ran faster than the other versions.)
There's no excuse for that sort of thing showing up on a benchmarking
site.
It's no different than NVidia or ATI detecting a benchmark program and
optimizing certain things for that program only.
It gets worse, Ed: the administrators behind the shootout don't care.
They never have. They continually promote their website, but when
challenged on the methodology used or technical issues, they give the
quote that television psychics use: for entertainment purposes only.
They're dishonest and run a benchmark comparison site that is so flawed
that you can't even remotely trust it.
The saying goes "lies, damned lies, and statistics". Well, any published
benchmark is even worse than statistics in that line.
I'm *not* against the concept of benchmarking. I'm definitely against
the concept of comparative benchmarking in the way that the shootout
does it. I will often benchmark the code that I write to make sure that
I'm writing efficient code.
But I won't pretend that the results are useful for comparisons.
They never are.
-austin