Performance

Overview

uLispInfograph.gif

Other SAMD21-based ARM M0 boards, such as the MKRZero, Adafruit Gemma M0, Adafruit ItsyBitsy M0, and Adafruit Feather M0 Adalogger are similar in performance to the Arduino Zero.

Other SAMD51-based ARM M4 boards, such as the Adafruit ItsyBitsy M4 and Adafruit Feather M4, are similar in performance to the Adafruit Metro M4.

Other RP2040-based boards, such as the Raspberry Pi Pico W and Adafruit Feather RP2040, are similar in performance to the Raspberry Pi Pico.

Other K210-based RISC-V boards, such as the Sipeed MAiX One Dock and Sipeed MAiX BiT, are similar in performance to the Sipeed Maixduino.

Platforms

The following table gives a summary of the performance of the different boards supported by the latest release of uLisp for each platform:

AVR-Nano version

Platform Processor Clock Current Objects Image Code GC time Tak Q2
Arduino Uno ATmega328 16 MHz 54 mA 320 256 0.5 ms 64.6 s  
Arduino Nano ATmega328 16 MHz   319 256 0.5 ms 63.3 s  
Arduino Nano Every ATmega4809 20 MHz   1066 64 1.4 ms 53.3 s 105 s
ATmega4809 Curiosity Nano ATmega4809 20 MHz   1066 64 1.4 ms 49 s 112 s

AVR version

Platform Processor Clock Current Objects Image Code GC time Tak Q2
Arduino Mega 2560 ATmega2560 16 MHz 90 mA 1344 1024 2.1 ms 52.9 s
Lisp Badge ATmega1284 16 MHz   2944 All 96 4.7 ms 54.6 s 109 s
Lisp Badge LE AVR128DB48 24 MHz   2800 All 96 2.5 ms 34.9 s 72.1 s
AVR128DA48 Curiosity Nano AVR128DA48 24 MHz 22 mA 2920 All 96 2.6 ms 33.1 s 69.3 s
AVR128DB48 Curiosity Nano AVR128DB48 24 MHz 22 mA 2920 All 96 2.6 ms 33.1 s 68.0 s

ARM version

Platform Processor Clock Current Objects Image Code GC time Tak Q2
Arduino Zero ATSAMD21 48 MHz 13 mA 2500 All 128 2.1 ms 11.4 s 24.3 s
Arduino MKRZero ATSAMD21 48 MHz 23 mA 2640 All 128 2.2 ms 14.2 s 32.8 s
Adafruit Gemma M0 ATSAMD21 48 MHz   2816 All 128 2.4 ms 14.9 s 33.8 s
Adafruit QT-Py SAMD21 ATSAMD21 48 MHz   2816 All 128 1.3 ms 14.9 s 33.8 s
Adafruit ItsyBitsy M0 ATSAMD21 48 MHz   2816 All 128 1.3 ms 14.9 s 33.8 s
Adafruit Feather M0 ATSAMD21 48 MHz   2816 All 128 1.3 ms 14.9 s 34.3 s
Adafruit Neo Trinkey ATSAMD21 48 MHz 14 mA 2816 All 128 1.2 ms 13.3 s 29.5 s
Seeed Studio XIAO SAMD21 ATSAMD21 48 MHz   2816 All 128 2.4 ms 14 s 41 s
Adafruit Grand Central M4 ATSAMD51 120 MHz 33 mA 28800 All 256 4.6 ms 3.9 s 8.6 s
Adafruit Metro M4 ATSAMD51 120 MHz   20480 All 256 3.3 ms 4.4 s 9.8 s
Adafruit ItsyBitsy M4 ATSAMD51 120 MHz   20608 All 256 3.3 ms 4.4 s 9.9 s
Adafruit Feather M4 ATSAMD51 120 MHz 24 mA 20608 All 256 3.3 ms 3.8 s 8.6 s
Adafruit PyGamer/PyBadge ATSAMD51 120 MHz   20608 All 256 3.3 ms 4.2 s 10.2 s
Seeed Studio Wio Terminal ATSAMD51 120 MHz   20480 All 256 3.3 ms 5.3 s 13.0 s
BBC Micro:bit nRF51822 16 MHz 21 mA 1344 * 64 2.2 ms 36.8 s 79.5 s
Calliope mini nRF51822 16 MHz   3328 * 64 5.3 ms 34 s 82 s
BBC Micro:bit V2 nRF52833 64 MHz   12927 * 128 6.7 ms 8.6 s 18.9 s
Adafruit CLUE nRF52840 64 MHz   21120 All 256 7.8 ms 12.7 s 31.8 s
Adafruit ItsyBitsy nRF52840 nRF52840 64 MHz   21120 All 256 6.8 ms 12.6 s 31.4 s
Seeed Studio XIAO nRF52840 nRF52840 64 MHz 11 mA 21120 All 256 5.9 ms 10.7 s 26.3 s
Circuit Playground Bluefruit nRF52840 64 MHz 19 mA  21120 All 256 5.9 ms 10.6 s 26.7 s
Raspberry Pi Pico RP2040 133 MHz 24 mA 23000 All 256 4.0 ms 5.9 s 14.6 s
Raspberry Pi Pico W RP2040 133 MHz   23000 All 256 4.0 ms 4.8 s 12.9 s
Adafruit Feather RP2040 RP2040 133 MHz   23000 All 256 4.0 ms 5.0 s 13.1 s
Feather RP2040 Adalogger RP2040 133 MHz 33 mA 23000 All 256 4.0 ms 6.1 s 15.0 s
Adafruit Qt-Py RP2040 RP2040 133 MHz   22911 All 256 3.7 ms 8.9 s 22.3 s
Seed Studio XIAO RP2040 RP2040 133 MHz   22911 All 256 3.7 ms 9.2 s 23.1 s
Raspberry Pi Pico 2 ARM
Raspberry Pi Pico 2 RISC-V 
RP2350
RP2350 
150 MHz
150 MHz 
20 mA
19 mA
47000
42500
All
All
256
256
5.0 ms
4.3 ms
5.0 s
3.9 s
12.3 s
10.4 s
Pimoroni Tiny 2350 ARM
Pimoroni Tiny 2350 RISC-V
RP2350
RP2350 
150 MHz
150 MHz 
23 mA
23 mA 
46500
42500 
All
All 
256
256 
5.0 ms
4.3 ms 
4.5 s
5.0 s 
11.5 s
11.8 s 
Pimoroni Pico Plus 2 ARM
Pimoroni Pico Plus 2 RISC-V
Pimoroni Pico Plus 2 ARM ¶
Pimoroni Pico Plus 2 RISC-V ¶
RP2350
RP2350
RP2350
RP2350
150 MHz
150 MHz
150 MHz
150 MHz
21 mA
20 mA
24 mA
23 mA
46500
42000
1000000
1000000
All
All
All
All
256
256
256
256
5.0 ms
4.3 ms
1.0 s
1.0 s
3.8 s
3.6 s
7.8 s
7.8 s
9.2 s
8.3 s
18.7 s
17.2 s
Maxim MAX32620FTHR MAX32620 96 MHz 6 mA 24704 * 256 5.4 ms 6.1 s 13.5 s
Teensy 4.0 iMXRT1062  600 MHz 101 mA 60000 All 256 1.3 ms 0.4 s  0.87 s
Teensy 4.1 iMXRT1062  600 MHz 110 mA 60000 All 256 1.3 ms 0.4 s  0.88 s
Arduino UNO R4 Minima RA4M1  48 MHz 34 mA 2032 1024 128 0.9 ms 10.1 s  22.5 s
Arduino UNO R4 WiFi RA4M1  48 MHz   1610 1024 128 0.8 ms 11.0 s  22.8 s

ESP version

Platform Processor Clock Current Objects Image Code GC time Tak Q2
Adafruit ESP32 Feather ESP32 240 MHz   9216 All 0.4 ms 8.1 s 22.1 s
Adafruit ESP32 Feather V2
Adafruit ESP32 Feather V2
 ¶ 
ESP32
ESP32 
240 MHz
240 MHz
60 mA
63 mA
9500
250000
All
All 

† 
0.4 ms
156 ms 
10 s
8.9 s 
26.0 s
21.9 s 
Adafruit QT Py ESP32 Pico ESP32 240 MHz   260000 All 156 ms 7.9 s 20.9 s
Muse Lab ESP32 Key ESP32 240 MHz 59 mA 9500 All 0.5 ms 6.3 s 16.8 s 
Adafruit ESP32-S2 Feather
Adafruit ESP32-S2 Feather
 ¶
ESP32-S2
ESP32-S2 
240 MHz
240 MHz
45 mA
47 mA 
6500
250000 
All
All 

† 
0.4 ms
132 ms 
2.5 s
4.1 s 
5.4 s
8.6 s 
Adafruit ESP32-S2 TFT Feather
Adafruit ESP32-S2 TFT Feather
 ¶
ESP32-S2
ESP32-S2 
240 MHz
240 MHz
48 mA
54 mA 
6500
250000 
All
All 

† 
0.4 ms
131 ms 
2.4 s
4.2 s 
5.2 s
9.1 s 
Adafruit ESP32-S2 QT-Py ESP32-S2 240 MHz   8160 All 0.6 ms 2.7 s 6.0 s
Unexpected Maker Feather S2 ESP32-S2 240 MHz   8160 All 0.6 ms 2.7 s 6.0 s
ESP32-S2-Soala-1 WROVER ESP32-S2 240 MHz   260000 All 137 ms 5.4 s 13.6 s
ESP32-S2-Soala-1 WROOM ESP32-S2 240 MHz   8160 All 0.6 ms 3.8 s 10.0 s
Muse Lab ESP32-S2 Key ESP32-S2 240 MHz 50 mA 8160 All 0.6 ms 2.4 s 5.8 s
ESP32-C3-DevKitM-1 ESP32-C3 160 MHz 39 mA 9216 All 0.9 ms 4.8 s 12.1 s
ESP32-S3-DevKitM-1 ESP32-S3 240 MHz 73 mA 25000 All 1.1 ms 5.1 s 13.5 s
LilyGo T-Deck
LilyGo T-Deck ¶
ESP32-S3
ESP32-S3 
240 MHz
240 MHz
145 mA
145 mA 
25000
1000000 
All
All 

† 
1.1 ms
230 ms 
2.1 s
3.3 s 
4.9 s
6.9 s 
M5Stack Cardputer ESP32-S3  240 MHz 86 mA 23750  All 1.0 ms 2.1 s 5.3 s 

RISC-V version

Platform Processor Clock Current Objects Image Code GC time Tak Q2
Sipeed Maixduino K210 400 MHz 145 mA 500000 * 512 44 ms 1.5 s 3.1 s
Sipeed MAiX BiT K210 400 MHz 91 mA 500000 * 512 44 ms 1.5 s 3.0 s

Key

Current gives the active current consumption at 5V when powered from the USB port and running a benchmark.

Objects gives the number of Lisp objects of storage available, each equivalent to 4 bytes on the 8/16-bit platforms and 8 bytes on the 32-bit platforms.
¶ shows with PSRAM enabled, where available. 

Image gives the number of objects that can be saved to non-volatile storage using save-image, or All which means that the whole workspace can be saved.
* These platforms don't provide non-volatile storage for saving an image, but you can save images to an SD card with a suitable interface.

Code gives the number of bytes of machine code that can be stored by the assembler, by default, on AVR, ARM, or RISC-V platforms.
† means not available.

GC time gives the time taken for a garbage collection.

Tak gives the time taken to calculate the recursive integer function (tak 18 12 6); see Benchmarks.

Q2 gives the time taken to calculate the recursive integer function (q2 7 8); see Benchmarks.