1. How Fast is Felix?

This module contains codes to compare the Felix translator with other language translators. Each translator should be run with switches for a high level of optimisation. Here is a list of translators with existing or planned test harness support, along with some biased comments.
Felix
The scripting language with static typing and high performance, offers functional and procedural programming with microthreading, and a simple interface to C/C++. Versions prior to 1.1 offered extremely poor performance, however 1.1 now appears to outperform all other translators tested.
C
The traditional systems programming language. We test two translators: gcc with optimisation switches, a plain gcc command is also tested as a baseline. GNU's C compiler is in widespread use, but has not been noted for good performance in the past. Recent versions, however, appear to be doing considerably better, for example it actually recognizes tail calls sometimes.
C++
The popular extension of C to include overloading, classes, templates and exceptions. Represented by the GNU g++ compiler. Felix itself generates C++ code compiled by g++ with the same optimisation switches.
Ada
A procedural language in the Algol tradition, with an emphasis on strict control of all details. we're using the GNU Ada translator system gnat, which uses the same back end as gcc. Gnat appears to provide excellent performance.
Haskell
Haskell is the leading lazy functional programming language, used by everyone in the functional and academic communities as a reference language. We use ghc, the Glorious Glasgow Haskell compiler, which is an open source community project hosted on Sourceforge. The GHC programs are the most succinct and expressive, however the translator leaves something to be desired in performance.
Ocaml
Ocaml is an ML family language with rapidly increasing popularity. It provides eager functional, imperative, and object oriented programming. The bytecode compiler is available on a wide variety of platforms, and on major platforms a native code compiler is available. Ocaml is a landmark system in that it clearly demonstrates an 'academic' functional language can have superior performance. The Felix compiler is itself written in Ocaml.
Clean
We would love to test Clean, a lazy functional language which uses the type system systematically to locate and optimise contructs reliably to destructive updates. It is reputed to provide superior performance, however I have not been able to get it to work on the AMD64, and the provided binary is probably 32 bit anyhow.
Java
Java is a probably the most popular application programming language in the world today. Earlier versions suffered from woeful performance, horrendous startup times, a failure to deliver promised platform independence, and inherited most of the serious design faults of C and C++ whilst adding many more of its own, including a complete lack of any sane kind of polymorphism.

However it did deliver three important facilities which, in addition to a huge marketing campaign, had sufficient merit to ensure its growth. Java provides garbage collection and a standard threading model, which C and C++ lack, and came with a standard GUI library (initially AWT, but now SWING).

Because of its popularity, much work has been done to solve the performance problems, both with high quality native code compilers, and also JIT based bytecode interpreters. In addition Sun has added weak facilities for polymorphism in version 2 which alleviate some of the disgusting casting previously required.

We're using the GNU gcj native code compiler, which is reputed to have reasonable performance. I would like to also test a good JIT based interpreter.

C#
Microsofts answer to Java, C# is a better language, but only marginally. C# had generics right from the start, and it provides superior integration via the .NET platform languages. I haven't figured out how to get a version yet (my Debian based Ubuntu system provides a C# compiler but it depends on Mono, which is not in the archive)
Pascal
Originally designed for teaching, extended by Borland in their famous Turbo Pascal system, then again in their Delphi system. We're testing both the GNU pascal front end of gcc and the free pascal compiler.

We currently generate gnuplot command files to plot the results as jpg files for our website. The data can be viewed in an interactive graphics console by running gnuplot without arguments, then typing

load "speed/machine/hostname/plotters/ack.gpl"
where 'ack' is replaced by the name of the test.
1.1. The Test Machines
1.2. [ack] Ackermanns Function
1.3. [takfp] Takfp