Thing Done

← The fleet

ESP32 vs Arduino Uno

Xtensa LX6 (ESP32) at 240 MHz against ATmega328P at 16 MHz, on real hardware, same C kernels, clocks verified.

ESP32

ESP32

Xtensa LX6 (ESP32)
Family
Xtensa
Board
ESP32
Clock
240 MHz
float / double
32-bit / 64-bit
Arduino Uno

Arduino Uno

ATmega328P
Family
AVR
Board
Arduino Uno
Clock
16 MHz
float / double
32-bit / 32-bit
Typical gap
56.9×
ESP32 faster, geometric mean of 30 cells
Biggest win for ESP32
403×
uint32_t divide
Closest cell
10.8×
double modulo
Clock for clock
3.80×
ESP32 needs fewer cycles per op (15.0× clock gap)

Operation by operation

Every cell

How many times faster ESP32 is than Arduino Uno, operations per second. Blue: ESP32 ahead. Orange: Arduino Uno ahead.

AddSubtractMultiplyDivideModulo
uint8_t 23.4× 11.4 M/s · 490 k/s 23.4× 11.4 M/s · 490 k/s 25.5× 11.4 M/s · 448 k/s 73.3× 10.4 M/s · 142 k/s 70.3× 10 M/s · 142 k/s
uint16_t 21.9× 11.4 M/s · 522 k/s 21.9× 11.4 M/s · 522 k/s 27.7× 11.4 M/s · 413 k/s 134× 9.32 M/s · 69.5 k/s 129× 8.97 M/s · 69.5 k/s
uint32_t 35.1× 12 M/s · 342 k/s 35.1× 12 M/s · 342 k/s 88.9× 12 M/s · 135 k/s 403× 10 M/s · 24.8 k/s 387× 9.6 M/s · 24.8 k/s
uint64_t 94.5× 7.05 M/s · 74.6 k/s 93.1× 6.94 M/s · 74.6 k/s 133× 4.79 M/s · 35.9 k/s 114× 1.75 M/s · 15.3 k/s 111× 1.69 M/s · 15.2 k/s
float 122× 12 M/s · 98.3 k/s 121× 12 M/s · 98.7 k/s 138× 12 M/s · 87 k/s 118× 3.8 M/s · 32.2 k/s 16.8× 1.73 M/s · 103 k/s
double 30.2× 2.96 M/s · 98.1 k/s 27.2× 2.68 M/s · 98.6 k/s 21.5× 1.86 M/s · 86.8 k/s 14.3× 459 k/s · 32.2 k/s 10.8× 1.11 M/s · 103 k/s

Where they sit in the fleet

Keep comparing

Swap sides