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 K210-based RISC-V boards, such as the Sipeed MAiX One Dock and Sipeed MAiX BiT, are similar in performance to the Sipeed Maixduino.

Performance

The following table gives a summary of the performance of the different boards supported by the latest versions of uLisp:

8/16-bit platforms

Platform Processor Clock Objects Image GC time Tak Q2
Arduino Uno, Arduino Nano ATmega328 16 MHz 318 256 0.5 ms 67.1 s  
Arduino Mega 2560 ATmega2560 16 MHz 1214 1024 2.1 ms 56.1 s 113.0 s
Tiny Lisp Computer, Lisp Badge ATmega1284 16 MHz 2944 All 4.7 ms 54.6 s 109.2 s
Arduino Nano Every ATmega4809 20 MHz 1066 64 1.4 ms 53.3 s 105.4 s
Curiosity Nano 4809 ATmega4809 20 MHz 1066 64 1.4 ms 49 s 112 s
Curiosity Nano AVR128DA48 AVR128DA48 24 MHz 2920 All 2.6 ms 34.8 s 68.6 s
Curiosity Nano AVR128DB48 AVR128DB48 24 MHz 2920 All 2.6 ms 34.8 s 68.6 s

32-bit platforms

Platform Processor Clock Objects Image Code GC time Tak Q2 FFT
Arduino Zero ATSAMD21 48 MHz 2816 All 128 2.4 ms 12 s 51 s 348 ms
Arduino MKRZero ATSAMD21 48 MHz 2816 All 128 2.4 ms 18.1 s 42.8 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 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 2.4 ms 14 s 41 s 445 ms
Seeeduino XIAO ATSAMD21 48 MHz 2816 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 20480 All 256 3.3 ms 4.4 s 9.8 s 121 ms
Adafruit Feather M4 ATSAMD51 120 MHz 20480 All 256 3.3 ms 4.4 s 9.8 s 121 ms
Adafruit PyGamer/PyBadge ATSAMD51 120 MHz 20480 All 256 3.3 ms 4.4 s 9.8 s 121 ms
Raspberry Pi Pico RP2040 133 MHz 15360 All 256 3.7 ms 8.4 s 20.7 s 251 ms
Adafruit CLUE nRF52840 64 MHz 20992 All 256 5.8 ms 6.7 s 17 s 199 ms
Adafruit ItsyBitsy nRF52840 nRF52840 64 MHz 20992 All 256 5.8 ms 6.7 s 17 s 199 ms
BBC Micro:bit nRF51822 16 MHz 1280 * 64 2.1 ms 35 s 85 s  
BBC Micro:bit V2 nRF52833 64 MHz 12800 * 128 6.8 ms 8.9 s 18.9 s 246 ms
Calliope mini nRF51822 16 MHz 3328 * 64 5.3 ms 34 s 82 s 1110 ms
Maxim MAX32620FTHR MAX32620 96 MHz 24576 * 256 8.7 ms 6.7 s 14.7 s 179 ms
ESP8266 boards ESP8266 160 MHz 4000 512 * 0.4 ms 13.2 s   209 ms
ESP32 boards ESP32 160 MHz 8000 512 * 0.5 ms 7.5 s 19.6 s 242 ms
Sipeed MAiX RISC-V boards K210 400 MHz 80000 * 512 6.5 ms 1.1 s 2.3 s 28 ms
Teensy 4.0/4.1 iMXRT1062  600 MHz 60000 * 256 1.2 ms 0.4 s  0.98 s 12 ms

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, on 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 (tak 18 12 6); see Benchmarks.

Q2 gives the time taken to calculate (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.