[comp.sys.atari.8bit] Dhrystone figures for the Atari 800xl

res@cblpe.ATT.COM (Rob Stampfli) (10/05/87)

x
I recently ported the Dhrystone Version 1.1 software to my Atari 800xl
and compiled it using the CC8 compiler recently posted by Steve Kennedy.
I then recoded the program in the Action! language and ran it.  Here
are the results:

	CC8 Version 2.3b, Ace-C Runtime Engine:	7.8 dhrystones/sec
	Action! Version 3.6:			131 dhrystones/sec

By way of comparison here are how some other common micro's performed:

	Commodore 64, C Power 2.9 trim:		 34 dhrystones/sec
	Commodore 128, C Power 128 trim:	 68 dhrystones/sec
	IBM PC/XT, MS-DOS 2.0, Microsoft 3.1 C:	347 dhrystones/sec
	Atari 520ST, TOS, Lattice 3.03.01:	450 dhrystones/sec
	Amiga 1000, Manx C 2.30a, 32 bits:	684 dhrystones/sec
	Amiga 1000, Manx C 2.30a, 16 bits:	915 dhrystones/sec
	Atari 520ST, TOS, Megamax 1.0:         1136 dhrystones/sec
	IBM PC/AT, PC-DOS 3.20, Microsoft 4.0: 1796 dhrystones/sec

Comments:
The dhrystone program is designed to generate a "figure of merit" benchmark
of a particular computer / compiler combination.  It consists of a
statistically typical set of operations, minus i/o and floating point,
invoked repeatedly and timed.  The results are indicated in iterations/sec.
Published statistics exist for literally hundreds of machine/compiler
combinations.

In getting these programs to run, I had to make several modifications, which
I believe did not significantly alter the final results.  Since CC8 does not
recognize 'typedefs', I had to rewrite the code so as not to use them. 
Action!, of course, is an entirely different language, but I took care
to port the code faithfully.  Surprisingly, the only area where I had trouble
making a direct port involved a doubly dimensioned array.  Action! does not
support this, so I had to define a large singly dimensioned array and generate
the index manually.  The dhrystone package was, by design I believe,
not optimally written in C, and could have been made for efficient during
the rewrite, if that had been a goal.

The results speak well of the machine and compilers.  CC8 is a real jewel,
the best C compiler I have seen for the Atari, and Steve has taken pains
to include most of the constructs found in the full implementation of C.
This was substantiated by the ease of the port.  However, CC8 is interpretive,
so you would not expect it to be a stellar performer in the speed category. 

Action! is marketed by OSS, Inc., and is a true compiler plus development
system on a plug-in Atari cartridge.  Not only does it possess a phenominal
human interface, but the code it produces is well known to run like a bat
out of hell.  Too bad it is a language which has never been available on
anything but the 8-bit Ataris. One concern I had was that Action! stores
string variables internally in a different format from C.  I don't think
this is significant in the operation of the program, so I did not go out of
my way to try to mimic C here, but rather let Action do its thing.

I never expected to break 100 dhrystones/sec even if I coded in assembler.
To do this on an 8-bit machine with a clock speed of less than 2 Mhz is
truely impressive.  I did not try a port to Basic, but it would be
interesting to see what kind of figures this would produce.  Any takers?

Robert Stampfli
cbosgd!cblpe!res