/circuitpython_benchmark

Raspberry Pi Pico (RP2040) and Adafruit Metro M7 (NXP IMXRT10XX) benchmark

Primary LanguagePython

circuitpython benchmark

Raspberry Pi Pico (RP2040), Adafruit Metro M7 (NXP IMXRT10XX) and Intel i7 CPU benchmark.

abstract

Script for Python and CircuitPython measures computation time, covering:

  • int and float datatypes
  • vectorized vs. looped operations
  • arithmetic, algebraic and trigonometric operations.

results


datatype

operation
Raspberry Pi Pico
t (s)
Adafruit Metro M7
t (s)

vs. Pico
Intel i7-6700HQ Laptop
t (s)

vs. Pico
int bitshift 31.614 6.710 4.7 x 0.164 192.5 x
int modulo 12.077 2.404 5.0 x 0.147 82.0 x
int bitwise-and 11.597 2.313 5.0 x 0.145 80.1 x
int bitwise-or 11.596 2.314 5.0 x 0.152 76.5 x
int bitwise-xor 11.598 2.312 5.0 x 0.152 76.4 x
int add 19.694 4.051 4.9 x 0.152 129.2 x
float add 13.319 2.629 5.1 x 0.127 105.1 x
array(np.float) add 1.561 0.183 8.5 x 0.006 248.7 x
vec speedup 8.5 x 14.4 x 20.2 x
int sub 11.597 2.313 5.0 x 0.147 79.1 x
float sub 13.566 2.633 5.2 x 0.132 102.5 x
array(np.float) sub 1.754 0.179 9.8 x 0.006 272.3 x
vec speedup 7.7 x 14.7 x 20.5 x
int mul 34.808 6.549 5.3 x 0.144 241.6 x
float mul 13.383 2.639 5.1 x 0.135 98.9 x
array(np.float) mul 1.890 0.204 9.3 x 0.006 311.1 x
vec speedup 7.1 x 12.9 x 22.3 x
int div 13.549 2.381 5.7 x 0.138 97.9 x
float div 13.991 2.692 5.2 x 0.125 111.5 x
array(np.float) div 2.097 0.238 8.8 x 0.006 340.9 x
vec speedup 6.7 x 11.3 x 20.4 x
int exp 20.625 3.221 6.4 x 0.297 69.4 x
float exp 20.457 3.547 5.8 x 0.285 71.7 x
array(np.float) exp 6.627 0.510 13.0 x 0.012 548.1 x
vec speedup 3.1 x 7.0 x 23.6 x
int sqr 17.391 3.241 5.4 x 0.288 60.4 x
float sqr 17.134 3.301 5.2 x 0.276 62.2 x
array(np.float) sqr 2.844 1.017 2.8 x 0.006 445.9 x
vec speedup 6.0 x 3.2 x 43.2 x
float sin 23.491 3.550 6.6 x 0.281 83.7 x
array(np.float) sin 6.638 0.605 11.0 x 0.015 451.7 x
vec speedup 3.5 x 5.9 x 19.1 x
float cos 20.729 3.539 5.9 x 0.299 69.3 x
array(np.float) cos 6.625 0.603 11.0 x 0.014 467.0 x
vec speedup 3.1 x 5.9 x 21.1 x
float tan 21.281 3.682 5.8 x 0.287 74.0 x
array(np.float) tan 7.151 0.768 9.3 x 0.025 290.2 x
vec speedup 3.0 x 4.8 x 11.7 x
float log 23.290 3.514 6.6 x 0.331 70.3 x
array(np.float) log 8.475 0.625 13.6 x 0.012 724.0 x
vec speedup 2.7 x 5.6 x 28.3 x
for(int) matmul 9.812 2.049 4.8 x 0.274 35.9 x
M(np.int16) matmul 1.146 0.045 25.5 x 0.001 1200.4 x
vec speedup 8.6 x 45.6 x 286.5 x
for(float) matmul 11.020 2.632 4.2 x 0.253 43.6 x
M(np.float) matmul 0.802 0.041 19.6 x 0.000 1914.1 x
vec speedup 13.7 x 64.2 x 603.6 x