Should have published some of this data long ago. But better late than never. I ran some very simple integer and floating point benchmarks on all the parts I could find that I have BASIC running on.
Yes, we just got a BASIC running on the Arduino Zero - SAMD21, and we are looking for beta testers, and gauging interest in adding this. We intend it to be a free download.
Sure there are Coremark numbers published by all chip vendors. But Coremark is copyrighted and takes a little configuring and only in C. Mine are not intended as an expansive benchmark, but as a quick test that can be implemented in a few minutes on nearly any device or language.
Floating point test
dim x as single
x=1000000
while x>1
x=x/1.0001
i=i+1 ' -- count iterations -- about 138K
loop
Integer test
i=1000000
while i
i=i-1
loop
And the results
Device | Float | Integer | raw CPU clock | notes |
---|---|---|---|---|
nRF51822 | 5442 ms | 1018 ms | 16 Mhz | microbit |
LPC824 | 4193 ms | 653 ms | 30 Mhz | |
LPC1549 | 3719 ms | 1001 ms | 72 Mhz | |
LPC11U37 | 2706 ms | 418 ms | 50 Mhz | |
LPC11U68 | 2855 ms | 419 ms | 50 Mhz | |
SAMD21 | 1887 ms | 310 ms | 48 Mhz | Arduino Zero |
MK20DX128 | 1167 ms | 273 ms | 72 Mhz | Teensy3.0 |
MK20DX256 | 795 ms | 276 ms | 72 Mhz | Teensy3.2 |
LPC2103 | 677 ms | 317 ms | 50 Mhz | |
STM32F411 | 110 ms | 139 ms | 100 Mhz | Nucleo |
LPC1751 | 519 ms | 120 ms | 96 Mhz | |
LPC1756 | 511 ms | 125 ms | 96 Mhz | |
LPC54102 | 97 ms | 125 ms | 100 Mhz | dual CPU |
LPC54102 M0 | 1930 ms | 259 ms | 100 Mhz | dual CPU |
LPC4078 | 73 ms | 101 ms | 120 Mhz | |
LPC54005 | 43 ms | 73 ms | 180 Mhz | |
STM32G431 | 43 ms | 71 ms | 170 Mhz | Nucleo |
LPC4330 | 39 ms | 70 ms | 200 Mhz | dual CPU |
RT1062 | 13.9 ms | 15 ms | 600 Mhz | Teensy 4.0 |
old HP netbook | 125 ms | 344 ms | 1600 Mhz | Atom N270 |
GPD PC | 31 ms | 141 ms | 1600 Mhz | Atom x7 Z8750 |
Dell PC | 9 ms | 34 ms | 2760 Mhz | i5 3330S CPU |
QBasic on Dell | 500 ms | 3789 ms | 2760 Mhz | i5 3330S CPU |
QB64 on Dell | 1.7 ms | 3.2 ms | 2760 Mhz | i5 3330S CPU |
Not all these parts became products, but were designed as special versions for OEMs.
The last are the PC's I use most of the time, and those PC's are running the PC-ARMbasic emulator (which compiles to interpreted opcodes). QBasic is an interpreter and quite a bit slower than the PC-ARMbasic emulator. QB64 compiles to native 64bit PC instructions.
The PC-ARMbasic emulator can be run from the command line on nearly any PC, maybe someone wants to expand this,
To comment check out the forum