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 ESP8266 or ESP32-based boards are similar in performance to the Adafruit ESP8266 Feather or Adafruit ESP32 Feather respectively.

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 1343 1024 2.1 ms 53.8 s 110.7 s
Lisp Badge ATmega1284 16 MHz 2944 All 96 4.7 ms 54.6 s 109.2 s
AVR128DA48 Curiosity Nano AVR128DA48 24 MHz 2919 All 96 2.6 ms 33.1 s 66.7 s
AVR128DB48 Curiosity Nano AVR128DB48 24 MHz 2919 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 2815 All 128 2.4 ms 14.9 s 33.8 s 445 ms
Adafruit QT-Py SAMD21 ATSAMD21 48 MHz 2815 All 128 1.3 ms 14.9 s 33.8 s 445 ms
Adafruit ItsyBitsy M0 ATSAMD21 48 MHz 2815 All 128 1.3 ms 14.9 s 33.8 s 445 ms
Adafruit Feather M0 ATSAMD21 48 MHz 2815 All 128 1.3 ms 14.9 s 34.3 s 445 ms
Adafruit Neo Trinkey ATSAMD21 48 MHz 2815 All 128 1.2 ms 15.2 s 35.6 s 445 ms
Seeed Studio XIAO SAMD21 ATSAMD21 48 MHz 2815 All 128 2.4 ms 14 s 41 s 445 ms
Adafruit Metro M4 Grand Central ATSAMD51 120 MHz 28672 All 256 4.6 ms 4.2 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 20607 All 256 3.3 ms 4.4 s 9.9 s 121 ms
Adafruit Feather M4 ATSAMD51 120 MHz 20607 All 256 3.3 ms 4.5 s 10.2 s 121 ms
Adafruit PyGamer and PyBadge ATSAMD51 120 MHz 20607 All 256 3.3 ms 4.4 s 10.2 s 121 ms
Seeed Studio Wio Terminal ATSAMD51 120 MHz 20479 All 256 3.3 ms 5.3 s 13.0 s 121 ms
BBC Micro:bit nRF51822 16 MHz 1343 * 64 2.2 ms 36.7 s 77.9 s  
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 21119 All 256 7.8 ms 12.7 s 31.8 s 199 ms
Adafruit ItsyBitsy nRF52840 nRF52840 64 MHz 21119 All 256 6.8 ms 12.6 s 31.4 s 199 ms
Seeed Studio XIAO nRF52840 nRF52840 64 MHz 21119 All 256 6.8 ms 12.6 s 31.5 s 199 ms
Raspberry Pi Pico RP2040 133 MHz 22911 All 256 3.7 ms 7.2 s 17.7 s 174 ms
Raspberry Pi Pico W RP2040 133 MHz 22911 All 256 3.7 ms 7.2 s 17.7 s 174 ms
Adafruit Feather RP2040 RP2040 133 MHz 22912 All 256 4.0 ms 5.6 s 13.0 s 174 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
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 2160 1024 128 0.9 ms 10.3 s  22.6 s 335 ms
Arduino UNO R4 WiFi RA4M1  48 MHz 1800 1024 128 0.8 ms 10.4 s  22.8 s 344 ms

ESP version

Platform Processor Clock Objects Image Code GC time Tak Q2 FFT
Adafruit Huzzah Feather ESP8266 160 MHz 3928 512 0.8 ms 13.3 s   209 ms
Adafruit ESP32 Feather ESP32 240 MHz 9216 All 0.4 ms 8.1 s 21.2 s 242 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-Saola-1 ESP32-S2 240 MHz 8160 All 0.6 ms 5.7 s 14.9 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 79999 * 512 6.5 ms 1.1 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.