Performance

Overview

uLispInfograph.jpg

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 versions:

8/16-bit platforms

Platform Processor Clock Objects Image GC time Tak Q2
Arduino Uno, Arduino Nano ATmega328 16 MHz 315 256 0.6 ms 62 s  
Arduino Mega 2560 ATmega2560 16 MHz 1214 1024 2.1 ms 51 s 122 s
Tiny Lisp Computer, Lisp Badge ATmega1284 16 MHz 2816 1024 4.8 ms 55 s  
Arduino Nano Every, Curiosity Nano ATmega4809 20 MHz 1066 64 1.4 ms 49 s 112 s
MSP430 F5529 LaunchPad MSP430F5529 25 MHz 1280 1280 1.3 ms 20 s  
MSP430 FR5969 LaunchPad MSP430FR5969  16 MHz 3072 1536 10.2 ms 60 s  
MSP430 FR5994 LaunchPad MSP430FR5994 16 MHz 3072 1536 6.7 ms 45 s  
MSP430 FR6989 LaunchPad MSP430FR6989 16 MHz 3072 1536 9.2 ms 62 s  

32-bit platforms

Platform Processor Clock Objects Image Code GC time Tak Q2 FFT
Arduino Zero ATSAMD21 48 MHz 2816 * 128 2.4 ms 12 s 51 s 348 ms
Arduino MKRZero ATSAMD21 48 MHz 2816 * 128 2.4 ms 18 s 51 s 446 ms
Adafruit Gemma M0 ATSAMD21 48 MHz 2816 * 128 2.4 ms 14 s 41 s 445 ms
Adafruit ItsyBitsy M0 ATSAMD21 48 MHz 2816 All 128 2.4 ms 15 s 41 s 445 ms
Adafruit Feather M0 Adalogger ATSAMD21 48 MHz 2816 All 128 2.4 ms 14 s 41 s  
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.2 s 11 s 122 ms
Adafruit ItsyBitsy M4 ATSAMD51 120 MHz 20480 All 256 3.3 ms 4.3 s 11 s  
Adafruit Feather M4 ATSAMD51 120 MHz 20480 All 256 3.3 ms 4.3 s 11 s  
Adafruit PyGamer/PyBadge ATSAMD51 120 MHz 20480 All 256 3.3 ms 4.2 s 11 s  
Adafruit CLUE nRF52840 64 MHz 19456 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  
Calliope mini nRF51822 16 MHz 3328 * 64 5.3 ms 34 s 82 s 1110 ms
Maxim MAX32620FTHR MAX32620 96 MHz 24576 * 256 5.4 ms 6.5 s 17 s 179 ms
Maple Mini STM32F103 72 MHz 1130 1280 * 0.7 ms 9 s   366 ms
Blue Pill STM32F103 72 MHz 1472 1280 * 0.7 ms 9 s    
ESP8266 boards ESP8266 160 MHz 4000 4096 * 0.4 ms 6.4 s   209 ms
ESP32 boards ESP32 160 MHz 8000 4096 * 0.5 ms 7.4 s 23 s 242 ms
Sipeed MAiX RISC-V boards K210 400 MHz 80000 * 512 6.5 ms 1.0 s 2.6 s 28 ms
Teensy 4.0/4.1 iMXRT1062  600 MHz 60000 * 256 1.2 ms 0.4 s  1.1 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.
* 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 ARM 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.