ESP32 vs Arduino Uno
Xtensa LX6 (ESP32) at 240 MHz against ATmega328P at 16 MHz, on real hardware, same C kernels, clocks verified.
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.
| Add | Subtract | Multiply | Divide | Modulo | |
|---|---|---|---|---|---|
| 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 |