dbahrdt / esp32-web-server-comparison

Comparison of asynchronous web servers on the ESP32

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Asynchronous programming on the ESP32

To compare asynchronous programming with different programming languages on the ESP32, we programmed a simple web server with C, C++, Rust, Lua and Python as part of our bachelor thesis.


In C and Rust we use freeRTOS tasks, i.e. OS threads for handling connections. In C++ we use Asio and for Lua the NodeMCU firmware. In both cases, callbacks are used for asynchronous operations. In Python, on the other hand, we use the async/await pattern with AsyncIO.


To compare the performance of the web servers, we measured characteristics such as memory consumption, response time, and the maximum number of parallel connections. For this we used Ali and two custom benchmarktools.

Repository structure

  • The web server directory contains the sample projects for the web servers of the respective languages. The readme of each project provides more detailed instructions for the build process.
  • The benchmark directory contains the three benchmarks and the results we measured.

About

Comparison of asynchronous web servers on the ESP32


Languages

Language:C++ 94.4%Language:C 1.6%Language:XSLT 1.4%Language:Perl 0.9%Language:Makefile 0.8%Language:HTML 0.3%Language:Python 0.3%Language:Rust 0.1%Language:CMake 0.1%Language:M4 0.1%Language:TeX 0.0%Language:Shell 0.0%Language:Lua 0.0%