Benchmark comparison of MicroPython boards
Posted: Wed Nov 16, 2016 11:50 am
Some benchmark comparison of MicroPython boards :
- pystone_lomem (with '%g' changed to '%u' in lines 69 and 71 to be compatible with WiPy 1.0, download here), in pystones/second :
* Pyboard D SF2W with MicroPython v1.9.4 : 1,724 (120 MHz) / 2,762 (216 MHz);
* Pyboard v1.1 with MicroPython v1.8.6 : 1,754;
* Pyboard Lite v1.0 with MicroPython v1.8.6 : 1,048;
* WiPy 1.0 with MicroPython v1.8.2-103 : 659;
* ESP8266 with MicroPython v1.8.6-7 : 223 (80 MHz) / 415 (160 MHz);
* ESP32 with MicroPython v1.10 : 1,024;
* BBC Micro:bit with MicroPython v1.7.9 : not enough RAM to run;
* LoPy with MicroPython 0.9.6.b1 : 829;
* WiPy2 with MicroPython 0.9.6.b1 : 836;
* Teensy 3.2 with MicroPython v1.8.6 : 846;
* Teensy 3.5 with MicroPython v1.8.6 : 1,086;
* Teensy 3.6 with MicroPython v1.8.6 : 2,212;
* MAiX BiT with MicroPython v0.1.1 (@ 403 MHz) : 5,102;
- PerformanceTest using 'time.ticks_ms' (download here versions with 'pyb.millis', 'time.ticks_ms' and 'microbit.running_time()'), in number of times in 10s :
* Pyboard D SF2W @ 120 MHz with MicroPython v1.9.4, using 'pyb.millis' : 2,961,396 / 5,112,725 (native) / 7,201,474 (viper);
* Pyboard D SF2W @ 120 MHz with MicroPython v1.9.4 : 2,960,096;
* Pyboard D SF2W @ 216 MHz with MicroPython v1.9.4, using 'pyb.millis' : 4,717,962 (216 MHz) / 7,473,484 (native) / 11,930,233 (viper);
* Pyboard D SF2W @ 216 MHz with MicroPython v1.9.4 : 4,712,068;
* Pyboard v1.1 with MicroPython v1.8.6, using 'pyb.millis' : 2,815,970 / 4,610,390 (native) / 8,771,699 (viper);
* Pyboard v1.1 with MicroPython v1.8.6 : 2,783,122;
* Pyboard Lite v1.0 with MicroPython v1.8.6, using 'pyb.millis' : 1,738,503 / 2,686,262 (native) / 5,392,659 (viper);
* Pyboard Lite v1.0 with MicroPython v1.8.6 : 1,732,370;
* WiPy 1.0 with MicroPython v1.8.2-103 : 918,031;
* ESP8266 with MicroPython v1.8.6-7 : 171,145 (80 MHz) / 341,224 (160 MHz);
* BBC Micro:bit with MicroPython v1.7.9 : 168,826;
* LoPy with MicroPython 0.9.6.b1 : 651,394;
* WiPy2 with MicroPython 0.9.6.b1 : 680,488;
* Teensy 3.2 with MicroPython v1.8.6 : 1,041,445;
* Teensy 3.5 with MicroPython v1.8.6 : 1,204,193
* Teensy 3.6 with MicroPython v1.8.6 : 3,451,931;
- hsquare.py (type Ia supernova calculation with float point for 50,000 points), mean time for each calculation in us :
* Pyboard D SF2W with MicroPython v1.9.4 : 76 (120 MHz) / 46 (216 MHz);
* Pyboard v1.1 with MicroPython v1.8.6 : 83;
* Pyboard Lite v1.0 with MicroPython v1.8.6 : 139;
* WiPy 1.0 with MicroPython v1.8.2-103 : - (no float point support);
* ESP8266 with MicroPython v1.8.6-7 : 460 (80 MHz) / 239 (160 MHz);
* BBC Micro:bit with MicroPython v1.7.9 : 1,589;
* LoPy with MicroPython 0.9.6.b1 : 107;
* WiPy2 with MicroPython 0.9.6.b1 : 143;
* Teensy 3.2 with MicroPython v1.8.6 : 278;
* Teensy 3.5 with MicroPython v1.8.6 : 138
* Teensy 3.6 with MicroPython v1.8.6 : 73.
MicroPython release 0.9.6.b1 (for LoPy and WiPy 2) has default ESP32 frequency set as 160 MHz, instead of 80 MHz as before.
(21/11/2016 : added Teensy 3.x)
(27/11/2016 : updated LoPy and WiPy 2 with firmware 0.9.6.b1)
(11/03/2019) updated with Pyboard D, ESP32 and MAiX BiT
- pystone_lomem (with '%g' changed to '%u' in lines 69 and 71 to be compatible with WiPy 1.0, download here), in pystones/second :
* Pyboard D SF2W with MicroPython v1.9.4 : 1,724 (120 MHz) / 2,762 (216 MHz);
* Pyboard v1.1 with MicroPython v1.8.6 : 1,754;
* Pyboard Lite v1.0 with MicroPython v1.8.6 : 1,048;
* WiPy 1.0 with MicroPython v1.8.2-103 : 659;
* ESP8266 with MicroPython v1.8.6-7 : 223 (80 MHz) / 415 (160 MHz);
* ESP32 with MicroPython v1.10 : 1,024;
* BBC Micro:bit with MicroPython v1.7.9 : not enough RAM to run;
* LoPy with MicroPython 0.9.6.b1 : 829;
* WiPy2 with MicroPython 0.9.6.b1 : 836;
* Teensy 3.2 with MicroPython v1.8.6 : 846;
* Teensy 3.5 with MicroPython v1.8.6 : 1,086;
* Teensy 3.6 with MicroPython v1.8.6 : 2,212;
* MAiX BiT with MicroPython v0.1.1 (@ 403 MHz) : 5,102;
- PerformanceTest using 'time.ticks_ms' (download here versions with 'pyb.millis', 'time.ticks_ms' and 'microbit.running_time()'), in number of times in 10s :
* Pyboard D SF2W @ 120 MHz with MicroPython v1.9.4, using 'pyb.millis' : 2,961,396 / 5,112,725 (native) / 7,201,474 (viper);
* Pyboard D SF2W @ 120 MHz with MicroPython v1.9.4 : 2,960,096;
* Pyboard D SF2W @ 216 MHz with MicroPython v1.9.4, using 'pyb.millis' : 4,717,962 (216 MHz) / 7,473,484 (native) / 11,930,233 (viper);
* Pyboard D SF2W @ 216 MHz with MicroPython v1.9.4 : 4,712,068;
* Pyboard v1.1 with MicroPython v1.8.6, using 'pyb.millis' : 2,815,970 / 4,610,390 (native) / 8,771,699 (viper);
* Pyboard v1.1 with MicroPython v1.8.6 : 2,783,122;
* Pyboard Lite v1.0 with MicroPython v1.8.6, using 'pyb.millis' : 1,738,503 / 2,686,262 (native) / 5,392,659 (viper);
* Pyboard Lite v1.0 with MicroPython v1.8.6 : 1,732,370;
* WiPy 1.0 with MicroPython v1.8.2-103 : 918,031;
* ESP8266 with MicroPython v1.8.6-7 : 171,145 (80 MHz) / 341,224 (160 MHz);
* BBC Micro:bit with MicroPython v1.7.9 : 168,826;
* LoPy with MicroPython 0.9.6.b1 : 651,394;
* WiPy2 with MicroPython 0.9.6.b1 : 680,488;
* Teensy 3.2 with MicroPython v1.8.6 : 1,041,445;
* Teensy 3.5 with MicroPython v1.8.6 : 1,204,193
* Teensy 3.6 with MicroPython v1.8.6 : 3,451,931;
- hsquare.py (type Ia supernova calculation with float point for 50,000 points), mean time for each calculation in us :
* Pyboard D SF2W with MicroPython v1.9.4 : 76 (120 MHz) / 46 (216 MHz);
* Pyboard v1.1 with MicroPython v1.8.6 : 83;
* Pyboard Lite v1.0 with MicroPython v1.8.6 : 139;
* WiPy 1.0 with MicroPython v1.8.2-103 : - (no float point support);
* ESP8266 with MicroPython v1.8.6-7 : 460 (80 MHz) / 239 (160 MHz);
* BBC Micro:bit with MicroPython v1.7.9 : 1,589;
* LoPy with MicroPython 0.9.6.b1 : 107;
* WiPy2 with MicroPython 0.9.6.b1 : 143;
* Teensy 3.2 with MicroPython v1.8.6 : 278;
* Teensy 3.5 with MicroPython v1.8.6 : 138
* Teensy 3.6 with MicroPython v1.8.6 : 73.
MicroPython release 0.9.6.b1 (for LoPy and WiPy 2) has default ESP32 frequency set as 160 MHz, instead of 80 MHz as before.
(21/11/2016 : added Teensy 3.x)
(27/11/2016 : updated LoPy and WiPy 2 with firmware 0.9.6.b1)
(11/03/2019) updated with Pyboard D, ESP32 and MAiX BiT