Title Performance evaluation of C/C++, MicroPython, Rust and TinyGo programming languages on ESP32 microcontroller /
Authors Plauska, Ignas ; Liutkevičius, Agnius ; Janavičiūtė, Audronė
DOI 10.3390/electronics12010143
Full Text Download
Is Part of Electronics.. Basel : MDPI. 2023, vol. 12, iss. 1, art. no. 143, p. 1-21.. ISSN 2079-9292
Keywords [eng] performance evaluation ; microcontroller ; ESP32 ; C/C++ ; MicroPython ; TinyGo ; Rust
Abstract [eng] The rapid growth of the Internet of Things (IoT) and its applications requires high computational efficiency, low-cost, and low-power solutions for various IoT devices. These include a wide range of microcontrollers that are used to collect, process, and transmit IoT data. ESP32 is a microcontroller with built-in wireless connectivity, suitable for various IoT applications. The ESP32 chip is gaining more popularity, both in academia and in the developer community, supported by a number of software libraries and programming languages. While low- and middle-level languages, such as C/C++ and Rust, are believed to be the most efficient, TinyGo and MicroPython are more developer-friendly low-complexity languages, suitable for beginners and allowing more rapid coding. This paper evaluates the efficiency of the available ESP32 programming languages, namely C/C++, MicroPython, Rust, and TinyGo, by comparing their execution performance. Several popular data and signal processing algorithms were implemented in these languages, and their execution times were compared: Fast Fourier Transform (FFT), Cyclic Redundancy Check (CRC), Secure Hash Algorithm (SHA), Infinite Impulse Response (IIR), and Finite Impulse Response (FIR) filters. The results show that the C/C++ implementations were fastest in most cases, closely followed by TinyGo and Rust, while MicroPython programs were many times slower than implementations in other programming languages. Therefore, the C/C++, TinyGo, and Rust languages are more suitable when execution and response time are the key factors, while Python can be used for less strict system requirements, enabling a faster and less complicated development process.
Published Basel : MDPI
Type Journal article
Language English
Publication date 2023
CC license CC license description