Wow, running BCPL. I only heard about this language about 10 years ago. It seems to have fallen out of use after the 1970s. It was the primary inspiration for the C language (which started out as a subset of BCPL).
I don’t know why, but I am taken with benchmarks on old microcomputers. Every time I see them, I want to try them out on the Atari 8-bit in an emulator.
I primarily use a third party version of Basic for these, called Turbo Basic. It’s an extension to the Atari Basic language, and runs 2-3x faster.
I was a bit puzzled by your results, because I saw you were running BBC Basic. I thought that meant you were running the test on a real BBC Micro, but then I read more carefully.
A college friend used to use an Apple IIGS (a 65816 machine). What I recall is it was able to run 6502 code quite a bit faster than on an older Apple II (though, I think it was also possible to run it at “normal” speed). That would explain your results.
I tried looking up the benchmarks. The Rugg/Feldman tests on an older Apple II fit within the parameters I expected.
Rugg/Feldman - Wikipedia
Also, here’s the Interface Age link to the Prime Cruncher (I couldn’t get yours to work).
Just for the fun of it, here are the results I got in Turbo Basic (labeled “Turbo”), compared to some computers of Atari’s era. Turbo Basic has a compiler. So, I tried that against the interpreted results, labeled “Comp”.
Turbo Comp Apple II IBM 5100 BBC Micro Atari Basic C-64 TI-99/4A
R/F1: 0.8 0.5 1.3 4.5 0.8 2.2 1.2 2.9
R/F2: 2.9 0.6 8.5 21.1 3.1 7.3 9.3 8.8
R/F3: 8.0 3.0 16.0 57.4 8.1 19.7 17.6 22.8
R/F4: 8.8 2.7 17.8 54.5 8.7 24.1 19.5 24.5
R/F5: 10.1 2.9 19.1 59.0 9.0 26.3 21.0 26.1
R/F6: 15.8 6.1 28.6 88.2 13.9 40.3 29.5 61.6
R/F7: 26.4 11.2 44.8 174.9 21.1 60.1 47.5 84.4
R/F8: 6.0 5.2 55.5 201.6 49.9 119.3 382.0
Turbo Comp
Byte Sieve: 74.1 25.9
Noel's Retro Lab: 23.8 8.6
Prime Cruncher: 580.5 244.7
Mandelbrot (64x48): 595.0 247.8
Mandelbrot (36x22): 155.8 64.8
Apple II result for Prime Cruncher: 960.0
The IBM 5100 results (a computer from 1975) were kinda interesting.
With Mandelbrot, I ran it with your parameters (64x48), just to get the time. For the heck of it, I tried it using 36x22, since that would fit on a 40-column screen.
I found the results I was getting with Turbo Basic were about comparable to BBC Basic.
I don’t know if this was common to microcomputer Basics, but something I heard about recently that caused Atari Basic to be so slow was that every time your program branched to a location, whether using goto, gosub, or a for-loop, the interpreter had to start from the beginning of your program and search sequentially for the target location. So, loops you wanted to execute fast needed to be at the top. This is one of the things that Turbo Basic optimized (not sure how).
What I’ve found interesting about this is these benchmarks are much more a test of the Basic implementations than they are of the hardware, because a lot of the hardware is comparable. A more efficient Basic implementation dramatically improves the results.