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 Objects Image Code GC time Tak Q2
Arduino Uno ATmega328 16 MHz 319 256 0.5 ms 63.3 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.4 s
ATmega4809 Curiosity Nano ATmega4809 20 MHz 1066 64 1.4 ms 49 s 112 s

AVR version

Platform Processor Clock Objects Image Code GC time Tak Q2
Arduino Mega 2560 ATmega2560 16 MHz 1344 1024 2.1 ms 55.6 s 110.7 s
Lisp Badge ATmega1284 16 MHz 2944 All 96 4.7 ms 54.6 s 109.2 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 2920 All 96 2.6 ms 33.1 s 66.7 s
AVR128DB48 Curiosity Nano AVR128DB48 24 MHz 2920 All 96 2.6 ms 33.1 s 66.7 s

ARM version

Platform Processor Clock Objects Image Code GC time Tak Q2 FFT
Arduino Zero ATSAMD21 48 MHz 2639 All 128 2.4 ms 12 s 51 s 348 ms
Arduino MKRZero ATSAMD21 48 MHz 2639 All 128 2.2 ms 18.3 s 43.6 s 446 ms
Adafruit Gemma M0 ATSAMD21 48 MHz 2816 All 128 2.4 ms 14.9 s 33.8 s 445 ms
Adafruit QT-Py SAMD21 ATSAMD21 48 MHz 2816 All 128 1.3 ms 14.9 s 33.8 s 445 ms
Adafruit ItsyBitsy M0 ATSAMD21 48 MHz 2816 All 128 1.3 ms 14.9 s 33.8 s 445 ms
Adafruit Feather M0 ATSAMD21 48 MHz 2816 All 128 1.3 ms 14.9 s 34.3 s 445 ms
Adafruit Neo Trinkey ATSAMD21 48 MHz 2816 All 128 1.3 ms 10.5 s 26.6 s 445 ms
Seeed Studio XIAO SAMD21 ATSAMD21 48 MHz 2816 All 128 2.4 ms 14 s 41 s 445 ms
Adafruit Metro M4 Grand Central ATSAMD51 120 MHz 28800 All 256 4.6 ms 4.1 s 11 s 122 ms
Adafruit Metro M4 ATSAMD51 120 MHz 20480 All 256 3.3 ms 4.4 s 9.8 s 122 ms
Adafruit ItsyBitsy M4 ATSAMD51 120 MHz 20608 All 256 3.3 ms 4.4 s 9.9 s 121 ms
Adafruit Feather M4 ATSAMD51 120 MHz 20608 All 256 3.3 ms 4.5 s 10.2 s 121 ms
Adafruit PyGamer and PyBadge ATSAMD51 120 MHz 20608 All 256 3.3 ms 4.2 s 10.2 s 121 ms
Seeed Studio Wio Terminal ATSAMD51 120 MHz 20480 All 256 3.3 ms 5.3 s 13.0 s 121 ms
BBC Micro:bit nRF51822 16 MHz 1344 * 64 2.2 ms 38.4 s 77.9 s N/A
Calliope mini nRF51822 16 MHz 3328 * 64 5.3 ms 34 s 82 s 1110 ms
BBC Micro:bit V2 nRF52833 64 MHz 12927 * 128 6.7 ms 8.6 s 18.9 s 246 ms
Adafruit CLUE nRF52840 64 MHz 21120 All 256 7.8 ms 12.7 s 31.8 s 199 ms
Adafruit ItsyBitsy nRF52840 nRF52840 64 MHz 21120 All 256 6.8 ms 12.6 s 31.4 s 199 ms
Seeed Studio XIAO nRF52840 nRF52840 64 MHz 21120 All 256 5.9 ms 9.1 s 24.9 s 199 ms
Circuit Playground Bluefruit nRF52840 64 MHz 21120 All 256 6.8 ms 9.0 s 24.4 s 199 ms
Raspberry Pi Pico RP2040 133 MHz 23000 All 256 4.0 ms 4.8 s 12.9 s 174 ms
Raspberry Pi Pico W RP2040 133 MHz 23000 All 256 4.0 ms 4.8 s 12.9 s 174 ms
Adafruit Feather RP2040 RP2040 133 MHz 23000 All 256 4.0 ms 5.0 s 13.1 s 174 ms
Feather RP2040 Adalogger RP2040 133 MHz 23000 All 256 4.0 ms 5.0 s 13.1 s 163 ms
Adafruit Qt-Py RP2040 RP2040 133 MHz 22911 All 256 3.7 ms 8.9 s 22.3 s 174 ms
Seed Studio XIAO RP2040 RP2040 133 MHz 22911 All 256 3.7 ms 9.2 s 23.1 s 174 ms
Raspberry Pi Pico 2 RP2350 150 MHz 47250 All 256 5.0 ms 3.8 s 10.7 s 98 ms
Maxim MAX32620FTHR MAX32620 96 MHz 24576 * 256 8.7 ms 6.7 s 14.7 s 179 ms
Teensy 4.0 and 4.1 iMXRT1062  600 MHz 60000 All 256 1.2 ms 0.4 s  0.98 s 12 ms
Arduino UNO R4 Minima RA4M1  48 MHz 2032 1024 128 0.9 ms 10.7 s  22.6 s 335 ms
Arduino UNO R4 WiFi RA4M1  48 MHz 1610 1024 128 0.8 ms 11.0 s  22.8 s 344 ms

ESP version

Platform Processor Clock Objects Image Code GC time Tak Q2 FFT
Adafruit ESP32 Feather ESP32 240 MHz 9216 All 0.4 ms 8.1 s 22.1 s 242 ms
Adafruit ESP32 Feather V2 ESP32 240 MHz 260000 All 168 ms 8.0 s 21.1 s 242 ms
Adafruit QT Py ESP32 Pico ESP32 240 MHz 260000 All 156 ms 7.9 s 20.9 s 90 ms
Adafruit ESP32-S2 Feather ESP32-S2 240 MHz 8160 All 0.6 ms 2.7 s 6.0 s 90 ms
Adafruit ESP32-S2 QT-Py ESP32-S2 240 MHz 8160 All 0.6 ms 2.7 s 6.0 s 90 ms
Unexpected Maker Feather S2 ESP32-S2 240 MHz 8160 All 0.6 ms 2.7 s 6.0 s 90 ms
ESP32-S2-Soala-1 WROVER ESP32-S2 240 MHz 260000 All 137 ms 5.4 s 13.6 s 169 ms
ESP32-S2-Soala-1 WROOM ESP32-S2 240 MHz 8160 All 0.6 ms 3.8 s 10.0 s 169 ms
ESP32-C3-DevKitM-1 ESP32-C3 160 MHz 9216 All 0.9 ms 7.8 s 20.3 s 235 ms
ESP32-S3-DevKitM-1 ESP32-S3 240 MHz 22000 All 0.9 ms 6.1 s 16.0 s 180 ms

RISC-V version

Platform Processor Clock Objects Image Code GC time Tak Q2 FFT
Sipeed MAiX RISC-V boards K210 400 MHz 500000 * 512 44 ms 1.0 s 2.3 s 28 ms

Key

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.

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.

FFT (32-bit platforms only) gives the time taken to run the floating-point 32-point fft benchmark; see Fast Fourier Transform.