[net.micro.amiga] Aztec vs. Lattice C

walton%DEImos.Caltech.Edu@Hamlet.Caltech.Edu (03/18/86)

From: walton%DEImos.Caltech.Edu@Hamlet.Caltech.Edu

I downloaded this from CompuServe's AmigaForum last night, and I was
sure the net would be interested.  Based on this, I ordered Aztec C
this morning.  Manx is giving a $100 discount from the $299 developers'
and $499 commercial package if you've already purchased Lattice C--
just give them the serial number of your Lattice package when you order.
The developers' package includes compiler, assembler, overlay linker,
full library interface to AmigaDOS and Intuition, and other goodies.
The commercial package adds source to make, diff, grep, and z (a vi-like
editor), a symbolic debugger, and a program to translate ALINK format
object files into Aztec linker format (in case you don't have source).

Steve Walton
Caltech Solar Astronomy			swalton@caltch.bitnet
walton%deimos@hamlet.caltech.edu	UUCP: ?

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
               Benchmarks for Aztec C versus Lattice C
                       by: Rick Schaeffer
                          March 9, 1986

Well, I finally got my Aztec C compiler!!  Of course, the first thing I
did was run a whole series of benchmarks to compare it with my
Lattice C compiler.  Since there's been so much interest in Lattice
vs Aztec, I ran all the benchmarks I could get my hands on and made
up the below table for anyone else who is interested.  The rules
under which the benchmarks were run were as follows:  First, I used
the default selections of both compilers as far as compile time options
go since I wanted to compare "apples to apples" as much as possible.
The Aztec compiler comes set up to take advantage of ram disk during
compiles, so I used the "cc2" program with Lattice (which I've modified
to, likewise, take advantage of ram disk for temporary files).  The Aztec
compiler automatically runs all passes of it's compiler...cc2 does the
same thing...except it costs time to load cc2 itself, so I ran cc2 from
ram disk...again attempting to compare apples to apples.  Compile and
link times were timed with a stopwatch and time was measured from hitting
return after typing the command line to seeing the CLI prompt after the
compile completed.  Run time was obtained by calls to the Amiga Dos
"Current_Time" function.  Source for all of the programs, except the
Dhrystone program, were obtained from the November, 1985 issue of
Byte magazine.  Source for the Dhrystone was obtained from the Compuserve
Amiga Forum database.  The large comment header was removed from the
Dhrystone program...other than that the programs were entered VERBATIM
as published in byte except for the timing routines (which were for the
Macintosh)...I modified these to work with the Amiga.

The Aztec compiler, by default, generates code that uses 16 bit integers,
and the Lattice compiler uses 32 bit integers.  However, the Aztec compiler
has a compile-time switch that causes it to use 32 bit integers and there
is a set of 32 bit libraries supplied with which to link such a program.
Therefore, I ran the benchmarks twice for the Aztec compiler...once with
the default of 16 bit integers, and again with the 32 bit option and 
libraries selected.  All timings are in seconds and hundredths except
the run time for the Dhrystone benchmark, which is in Dhrystones per
second.  I did not include timings for compile and link of the register
variables versions of the benchmarks.  They were insignificantly different
from the times shown...which are for the non-register versions.

                                   Benchmark Results

              Frame  Intmath  Pointer  Qsort  Sieve  Float    Fib  Dhrystone
------------------------------------------------------------------------
Compile
 Aztec(16)    21.44    26.58    23.29  27.07  24.70  26.07  23.67  36.26 
 Lattice      44.16    61.42    45.00  70.74  76.60  48.03  45.49  68.46
 Aztec(32)    23.48    26.19    23.96  26.78  26.01  25.23  23.74  35.14

Link
 Aztec(16)    33.95    33.47    33.97  43.79  39.11  38.92  31.52  42.64
 Lattice     112.34   109.79   111.73 112.00 116.49 114.34 115.35 112.64
 Aztec(32)    35.52    30.64    33.64  41.86  40.49  38.42  32.99  39.47

Executable Module Size (No register variables)
 Aztec(16)     5012     5532     4996   9504  13432   5428   5124   6488
 Lattice      13470    14108    13712  18224  22216  14336  13876  16040
 Aztec(32)     5212     5772     5196   9684  13640   5628   5328   6812

Executable Module Size (With register variables)
 Aztec(16)     5012     5252     4988   9448  13380    N/A    N/A   6328
 Lattice      13744    14088    13704  18204  22184    N/A    N/A  15996
 Aztec(32)     5208     5488     5184   9628  13588    N/A    N/A   6644

Run Time (No register variables)        <Dhrystone in Dhrystones/second>
 Aztec(16)     0.00     4.34    19.77  55.23   4.80  15.90  19.55   1000
 Lattice       0.10    21.77    16.85  56.40   5.96 118.32  22.70    454
 Aztec(32)     0.10     9.82    19.88  61.55   5.87  15.90  22.59    704

Run Time (With register variables)      <Dhrystone in Dhrystones/second>
 Aztec(16)     0.00     2.70    10.54  42.00   2.68    N/A    N/A   1041
 Lattice       0.00    21.40    10.53  44.60   3.98    N/A    N/A    462
 Aztec(32)     0.00     7.38    10.51  42.95   3.28    N/A    N/A    769


A couple of notes about these timings:  First, the run times are shown to
the hundredth of a second....but I doubt the accuracy of the Amiga's clock
at that resolution.  I AM confident, however, that the timings are accurate
to the tenth of a second.  Second, the Aztec compiler supports and uses
the Motorola Fast Floating Point library (FFP), whereas the Lattice compiler
uses Lattice's own IEEE compatible floating point library.  The Lattice
compiler can be linked with the FFP libraries, but it doesn't use them
by default...you have to do the function calls yourself.  That is the
reason there is such a LARGE difference in the floating point benchmark
for run time.  It is my understanding that the FFP library will be
supported by the Lattice compiler in a future release.

The Lattice compiler version I used for these benchmarks was 3.02.  I
understand that Lattice is now shipping version 3.03 but I have not
as yet received my upgrade (this is being written on 3/9/86).  The
Aztec version used for the benchmarks was 3.20a.


   Rick Schaeffer
   E. 13611 26th Ave
   Spokane, Wa.  99216

   Compuserve ID - 70120,174
   Bix ID        - ricks.


Steve Walton			 ARPA:	walton%deimos@hamlet.caltech.edu
Caltech Solar Astronomy          BITNET:swalton@caltech.bitnet
Physics DECNET: DEIMOS::WALTON	 UUCP:  your guess is as good as mine...