So I momentarely focused on raw INTEGER handling performance, with an extremely simple test that can be loaded and executed immediately, requiring one-byte arguments (in essence) to be fully executed:
POKE 559,0: FOR i=0 to 255: FOR J=0 to 255: NEXT J: NEXT I: POKE 559,34
No line-numbers required, no nothing. Just straight type-up and hit ENTER.
Here are the results (all on Atari 800 / Incognito, running on high-performance OS ROMs I already posted in a couple of past threads):
1. Atari Basic Revc.: 82.50 secs
2. Indus CP/M (Microsoft Basic 5.29): 46.75 secs
3. Atari Microsoft Basic II: 41.41 secs
4. Altirra Basic 1.55: 37.70 secs
5. Turbo Basic v1.5: 36.30 secs
Now, for the COMPILERS results, here's where we are in for quite a surprise:
1. Atari FastBasic v3.5: 09.75 secs
2. Indus CP/M (Microsoft Compiler): 02.10 secs (!)
3. Indus CP/M (CBasic 2.0 Dig. Rsch): 01.10 secs (!!)
I know the Indus-GT is running a Z80-A at around 4Mhz... but notice how the Atari fairs really well on the interpreted domain... Even in the cross-platform group, Atari's Microsoft Basic does better than CP/M Microsoft Basic (INTERPRETED, again).
HOWEVER, as soon as you move into the compiled domain, the CP/M versions just and purely KICK-ASS! The level of optimization of Digital Research's CBasic is impressive, yielding up to NINE (9) times the performance of Atari's fastest basic compiler we know (the newly introduced Fast Basic), and up to EIGHTY (80) TIMES faster than Atari Basic RevC (appalling, to say the least)...
I wonder if FastBasic's 8K-footprint target is what keeps it from not being able to further optimize integer arithmetic / operations, for instance (footprint that none of these optimized CP/M compilers will ever meet, though)...
I will later add the floating point resutls, which also promise to be head-scratching...
Edited by Faicuai, Thu Nov 8, 2018 4:32 PM.