The Great Computer Language Shootout

Back to the Language Shootout
Back to Doug's Homepage

[FAQ]   [Methodology]   [News]   [Performance Tips]   [Download]   [Activity Log]   [Acknowledgements]   [Scorecard]  


When I started this project, my goal was to compare all the major scripting languages. Then I started adding in some compiled languages for comparison ... and it's still growing with no end in sight. I'm doing it so that I can learn about new languages, compare them in various (possibly meaningless) ways, and most importantly, have some fun.

Someday, maybe, the results I present might even be meaningful, but please take the current results with a grain of salt. You might get different results on a different OS, on different hardware, with newer releases of the languages, or even from run to run of the same test. You might even find that I have horrible bugs in my testing method.

This is very much a work in progress, so if one day a language doesn't compare so well, it may be because my initial solution is sub-optimal. Subsequent contributions by friendly netizens may speed it up noticably.

[384 out of 576 benchmark programs completed]

The Shootout

The Benchmarks
Ackermann's Function
Array Access
Array Access II
Echo Client/Server
Exception Mechanisms
Fibonacci Numbers
Hash (Associative Array) Access
Hashes, Part II
List Operations
Matrix Multiplication
Method Calls
Nested Loops
Object Instantiation
Producer/Consumer Threads
Random Number Generator
Regular Expression Matching
Reverse a File
Spell Checker
Sieve of Eratosthenes
Statistical Moments
String Concatenation
Sum a Column of Integers
Word Frequency Count
(Not all languages are tested in every benchmark)

Other Language Comparisons
Creating Binary Extensions
(These are non-performance language comparisons)
The Languages
Language Imple-
(Download Page)
1. Awk gawk GNU Awk 3.0.6
2. Bash bash GNU sh, version 1.14.7(1)
3. C gcc egcs-2.91.66
4. C++ g++ egcs-2.91.66
5. Common Lisp cmucl CMU Common Lisp 18c
6. Eiffel se SmallEiffel The GNU Eiffel Compiler -- Release (- 0.77)   (patched to fix string append bug).
7. Emacs Lisp xemacs XEmacs 21.2 (beta37) "Pan" [Lucid] (i686-pc-linux)
8. Erlang erlang Erlang (BEAM) emulator version 5.0.1
9. Forth gforth gforth 0.5.0
10. Haskell ghc The Glorious Glasgow Haskell Compilation System, version 4.08.1
11. Icon icon Icon Version 9.3.2. July 1, 1999
12. Java java Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0beta_refresh-b09)
13. Lua lua Lua 4.0 (beta)
14. Mercury mercury Mercury 0.9.1
15. Ocaml ocaml The Objective Caml native-code compiler, version 3.00
16. Perl perl This is perl, v5.6.0 built for i686-linux
17. Pike pike Pike v7.1 release 17   (built with debug turned off).
18. Python python Python 2.0.0
19. Ruby ruby ruby 1.6.1 (2000-09-27) [i686-linux]
20. SML smlnj Standard ML of New Jersey, Version 110.0.6, October 31, 1999 -
21. Scheme rep rep version 0.13.4
22. Scheme bigloo Bigloo (2.2b)
23. Scheme guile Guile 1.4
24. Tcl tcl Tcl 8.3.2

About the Languages

I plan to only include languages for which I can get the source code. This is because I may end up falling in love with a new language, but I refuse to program in a language unless I can have access to the source code. Frankly, I think it's silly for computer languages to be closed-sourced, but maybe that's just me.

The languages compared here are a mixture of compiled and interpreted languages ... I think it's obvious we're not comparing apples to apples. If you want to compare languages of the same type, consider:

About the Benchmarks

Please see the new Methodology page.


You can now download the entire shootout as a compressed tarball from the download page. The current distribution is about 1.2MB and it is approximately alpha quality (it is probably suitable only for the adventurous). Please be aware that the web site will often be more current than the latest tarball. I will try to keep the News up-to-date to explain the new stuff.

The latest version is: 0.1.9

It is still quite new ... there are bound to be some problems.


I found the following links of interest while working on this project:


2001-01-15 2001-01-09 2001-01-03 2001-01-01 2001-01-01 2000-12-30 2000-12-29 2000-12-24 2000-12-19 2000-12-17 2000-12-16 2000-12-12 2000-12-10 2000-12-09 2000-12-06 2000-12-05 2000-12-03 2000-11-27 2000-11-26 2000-11-23 2000-11-20 2000-11-19 2000-11-06 2000-10-08 2000-10-03 2000-10-02 2000-09-30 2000-09-25
Back to the Language Shootout
Back to Doug's Homepage
Send comments or suggestions to