E.g. perl(1) is faster than ruby(1) at printing "Hello, world!". But since you presumably had ruby hot in cache and not perl the latter seems to be almost 4 times as slow.
Here's a better benchmark, which runs each of these 500 times and takes the average: http://gist.github.com/630868
Which yields these results:
Rate clojure php emacs python ruby js perl awk lua shell C
clojure 0.844/s -- -97% -97% -98% -99% -99% -99% -99% -99% -99% -100%
php 24.6/s 2812% -- -2% -43% -75% -76% -78% -82% -82% -84% -89%
emacs 25.2/s 2882% 2% -- -41% -74% -75% -78% -81% -82% -84% -88%
python 43.0/s 4995% 75% 71% -- -56% -58% -62% -68% -69% -72% -80%
ruby 96.7/s 11361% 294% 284% 125% -- -5% -15% -28% -29% -38% -55%
js 101/s 11919% 313% 303% 136% 5% -- -11% -24% -26% -35% -53%
perl 114/s 13397% 364% 353% 165% 18% 12% -- -15% -17% -27% -47%
awk 134/s 15743% 444% 431% 211% 38% 32% 17% -- -2% -14% -38%
lua 137/s 16134% 458% 444% 219% 42% 35% 20% 2% -- -12% -36%
shell 156/s 18359% 534% 519% 262% 61% 54% 37% 17% 14% -- -28%
C 216/s 25440% 777% 756% 401% 123% 113% 89% 61% 57% 38% --
Update: Added a C program and ran the shell program in a sub-shell (since perl's system function preloads a shell). Didn't add silentbicycle's SWI Prolog and OCaml since he didn't provide the source. Rate python swipl ruby perl lua luac bash ocaml awk subshell ocamlopt c py_pyc shell
python 46.3/s -- -17% -56% -70% -76% -78% -78% -79% -83% -87% -88% -88% -90% -92%
swipl 55.9/s 21% -- -46% -63% -70% -73% -73% -74% -80% -84% -85% -86% -88% -90%
ruby 104/s 125% 86% -- -31% -45% -49% -51% -52% -62% -71% -72% -74% -79% -82%
perl 152/s 229% 172% 46% -- -20% -26% -28% -30% -44% -57% -60% -61% -69% -74%
lua 189/s 309% 239% 82% 25% -- -8% -10% -13% -31% -47% -50% -52% -61% -67%
luac 206/s 345% 268% 98% 35% 9% -- -2% -6% -25% -42% -46% -48% -58% -64%
bash 211/s 356% 277% 103% 39% 11% 3% -- -3% -23% -41% -44% -46% -57% -63%
ocaml 218/s 372% 290% 110% 44% 15% 6% 3% -- -20% -39% -42% -45% -55% -62%
awk 273/s 491% 389% 162% 80% 44% 33% 30% 25% -- -23% -28% -31% -44% -52%
subshell 357/s 672% 539% 243% 135% 89% 74% 69% 64% 31% -- -6% -9% -26% -38%
ocamlopt 379/s 719% 577% 264% 149% 100% 84% 80% 73% 39% 6% -- -4% -22% -34%
c 394/s 751% 604% 278% 159% 108% 91% 87% 80% 44% 10% 4% -- -19% -31%
py_pyc 485/s 950% 768% 366% 219% 156% 136% 130% 122% 78% 36% 28% 23% -- -16%
shell 575/s 1143% 928% 452% 278% 203% 179% 172% 163% 110% 61% 52% 46% 18% --
I added hello world programs for C, SWI Prolog, and OCaml (byte and native compilers). Timings on OpenBSD/amd64.Edit: Since you can precompile Lua, I added that as 'luac'. It's not usually done, since Lua compiles VERY quickly, and the source is more portable. It's a data point, though. I also added a .pyc for Python - Python byte-compiles more slowly. There's little difference between lua and luac, but the difference between python and py_pyc is huge.
I also added shell with a new subshell, both sh and bash. And, source, as requested.
OCaml:
let _ = print_string "Hello world.\n"
Compile with "ocamlc -o ochello foo.ml" for bytecode, "ocamlopt -o ochello.opt foo.ml" for native.SWI Prolog:
swipl => sub { system qq[swipl -g "write('Hello world.\n')." -t "halt."] },
luac: print "Hello, world."
And then compile with "luac hellow.lua", run as "lua luac.out". Lua 5.1.4: 34k allocated, all memory freed.
Perl 5.10: 195k allocated (140k leaked!)
Ruby 1.8.7: 670k allocated (665kb still reachable at exit)
OpenJDK 6: 1.5M allocated (1M in use at exit).
Python 2.6.5: 3M allocated (1.2MB in use at exit)