Micropython platforms benchmarking

SBC CPU benchmark

SBC is based on STM32F7, but there are other CPUs on the market. Here we compare some of them to a common Python benchmark.

Benchmark

Since SBC is designed to run Python code, we compare the execution time of a complete Python code, known as pystone.

This benchmark has several parts to compare different Python operations like function calls, declarations, data type operations, etc.

Internally it contains less than 300 lines and looks like this:

image.png

Once executed, it measures the execution time in units of [pystones / second] and this measure can be used to compare between different platforms.
The complete source code can be found here: https://github.com/micropython/micropython-lib/blob/v1.9.3/pystone/pystone.py

After running the benchmark on different platforms, we got the following results:

BoardCPU[pystones/sec]
PCIntel200
OpenMVH7STM32H75.6
OpenH7STM32H73.6
KeyndriteK2102.9
OpenMVSTM32F72.5
SBCSTM32F71.9
RpPicoRP20401.08
WemosESP321.04
FeatherNFR520.7
M5StackESP320.66
NucleoL432STM32L40.33

In conclusion

  • The reference that we can all understand is the result from the PC platform, rated at 200 [pystones/sec].
  • The range of microcontrollers varies from 0.5 to 5 [pystones/sec] and the SBC reaches 1.9, so it can run Python roughly 100 times slower than a PC.
  • The SBC is also between the ESP32 and H7 devices, so it offers an average performance compared to the microcontrollers available on the market nowadays.