This is a Cyclone implementation of the benchmarks from the Great
Programming Language Shootout,

   http://www.bagley.org/~doug/shootout/

There are five language subdirectories:

  gcc/		These are the most recent C versions of the benchmarks
  cyclone-port/	These aim to be as much like the C version as possible
  cyclone/	These are more optimized for performance
  java-start/	These are the most recent Java versions of the benchmarks
		  with two additional directives in comments for measuring
		  elapsed time after the program starts.  Just compiling
		  the files directly will not perform any timing.
  java/		This directory is empty initially; it is generated
		  by processing the directives in the java-start/
		  directory using the inserttimer script.

We have not implemented prodcons, objinst, or methcall for Cyclone;
the first because Cyclone does not (always) support threads, and the
latter two because there is no obvious, type-safe way to implement
them in Cyclone. 

BUILDING THE BENCHMARKS

The Java regexmatch benchmark requires the Jakarta ORO
regular expression package, jakarta-oro-2.0.8.jar, to be in the
shootout/ directory or otherwise in your PATH.  You can get it from

  http://apache.cs.utah.edu/jakarta/oro/source/jakarta-oro-2.0.8.tar.gz

If you get a different version (so that the JAR file is different)
you must change the Makefile and test-java.sh to use the new filename.

To build, you can simply type

  make

RUNNING THE BENCHMARKS

You can run the benchmarks in two ways.  The simplest is just to do

  make bench

This prints the results for each benchmark, one per line for each
language.  You can also generate the raw results by doing

  make run

This crates a file run-DATE.out where DATE is the time the command
was run.  This can then be converted into a graph using the jgraph
tool (http://www.cs.utk.edu/~plank/plank/jgraph/jgraph.html).
Simply do

  cat run-DATE | ./makejgraph | jgraph > run-DATE.eps

More simply, the Makefile will do this for you if you do

  make run-DATE.eps

The graph shows the performance of cyclone, cyclone-port, java, and
gcc, all normalized to be relative to the gcc performance.  The
average over all benchmarks is plotted in the rightmost bar.

