Creative Computing Benchmark
The Creative Computing Benchmark, also called Ahl's Simple Benchmark, is a computer benchmark that was used to compare the performance of the BASIC programming language on various machines. It was first introduced in the November 1983 issue of Creative Computing magazine with the measures from a number of 8-bit computers that were popular at the time. Over a period of a few months, the list was greatly expanded to include practically every contemporary machine, topped by the Cray-1 supercomputer, which ran it in 0.01 seconds.

The Creative Computing Benchmark was one of three common benchmarks of the era. Its primary competition in the early 1980s in the United States was the Byte Sieve, of September 1981, while the earlier Rugg/Feldman benchmarks of June 1977 were not as well known in the United States, but were widely used in the United Kingdom.

History 

The benchmark first appeared in the November 1983 issue of Creative Computing under the title "Benchmark Comparison Test". In the article, author David H. Ahl was careful to state that it tested only a few aspects of the BASIC language, mostly its looping performance. He stated:

The initial results were provided for common machines of the era, including the Apple II, Commodore 64 and the recently-released IBM Personal Computer. Most of these machines ran some variation of the stock Microsoft BASIC and thus provided similar times on the order of two minutes, while the 16-bit PC was near the top of the list at only 24 seconds. the fastest machine in this initial suite was the Olivetti M20 at 13 seconds, and the slowest was Atari BASIC on the Atari 800 at 6 minutes 58 seconds.

In the months following its publication, the magazine was inundated with results for other platforms. It became a regular feature for a time, placed prominently near the front of the magazine with an ever-growing list of results. By March the fastest machine on the list was the Cray-1 at 0.01 seconds, and the slowest was the TI SR-50 programmable calculator at 12.7 days.

The benchmark had several problems that made it less useful for general purposes. For instance, the system did not test any string manipulation, whose performance varied widely across platforms. It also did not take advantage of any "speedups" available on different platforms, like the possible use of integer variables for loop indexes or turning off video access on machines with shared main memory. These limitations were widely debated at the time. The November 1983 article stipulated using an "accurate stopwatch" to time the program execution on machines lacking a real-time clock: When applied to the faster machines, this would yield test results highly dependent on the reaction time of the individual operating the stopwatch.

Its last appearance is in the May 1984 issue, which included values for 183 machines. This issue included a note that the many criticisms of the system had been taken to heart and a new benchmark program was under design. However, such a program never appeared in the magazine. In the September 1985 issue, David Ahl responded to a Letter to the Editor about the new benchmark program with "Several analysts spent many hours working out three new benchmark tests ... none gave different or better results".

The benchmark continued to be used as a general-purpose tool after this date, but as the importance of BASIC dwindled it became less common.

Code
This is the original version from the November 1983 edition:

 1 ' Ahl's simple benchmark test
 2 ' In Lines 30 and 40, some computers
 3 ' may require RND(1) for correct results
 10 PRINT "Accuracy  Random"
 20 FOR N=1 TO 100:A=N
 30 FOR I=1 TO 10:A=SQR(A):R=R+RND(0):NEXT I
 40 FOR I=1 TO 10:A=A^2:R=R+RND(0):NEXT I
 50 S=S+A:NEXT N
 60 PRINT ABS(1010-S/5);ABS(1000-R)

The following is from later versions of the benchmark code, which reduced the number of compound statements on a line:

 10 ' Ahl's Simple Benchmark
 20 FOR N=1 TO 100: A=N
 30 FOR I=1 TO 10
 40 A=SQR(A): R=R+RND(1)
 50 NEXT I
 60 FOR I=1 TO 10
 70 A=A^2: R=R+RND(1)
 80 NEXT I
 90 S=S+A: NEXT N
 100 PRINT ABS(1010-S/5)
 110 PRINT ABS(1000-R)

Notes

References

Citations

Bibliography
 
 
 

Benchmarks (computing)
History of computing
BASIC programming language