Thing Done

← The fleet

Arduino Uno vs Nucleo G474RE

ATmega328P at 16 MHz against Cortex-M4F (STM32G474) at 170 MHz, on real hardware, same C kernels, clocks verified.

Arduino Uno

Arduino Uno

ATmega328P
Family
AVR
Board
Arduino Uno
Clock
16 MHz
float / double
32-bit / 32-bit
Nucleo G474RE

Nucleo G474RE

Cortex-M4F (STM32G474)
Family
Arm Cortex-M
Board
Nucleo G474RE
Clock
170 MHz
float / double
32-bit / 64-bit
Typical gap
55.3×
Nucleo G474RE faster, geometric mean of 30 cells
Biggest win for Arduino Uno
0.15×
double modulo
Biggest win for Nucleo G474RE
352×
uint32_t divide
Clock for clock
5.20×
Nucleo G474RE needs fewer cycles per op (10.6× clock gap)

Operation by operation

Every cell

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

AddSubtractMultiplyDivideModulo
uint8_t 1/24.0× 490 k/s · 11.7 M/s 1/24.0× 490 k/s · 11.7 M/s 1/26.2× 448 k/s · 11.7 M/s 1/62.9× 142 k/s · 8.96 M/s 1/56.9× 142 k/s · 8.1 M/s
uint16_t 1/22.5× 522 k/s · 11.7 M/s 1/22.5× 522 k/s · 11.7 M/s 1/28.4× 413 k/s · 11.7 M/s 1/118× 69.5 k/s · 8.2 M/s 1/109× 69.5 k/s · 7.56 M/s
uint32_t 1/36.8× 342 k/s · 12.6 M/s 1/36.9× 342 k/s · 12.6 M/s 1/93.4× 135 k/s · 12.6 M/s 1/352× 24.8 k/s · 8.73 M/s 1/335× 24.8 k/s · 8.3 M/s
uint64_t 1/101× 74.6 k/s · 7.56 M/s 1/101× 74.6 k/s · 7.56 M/s 1/186× 35.9 k/s · 6.67 M/s 1/75.8× 15.3 k/s · 1.16 M/s 1/76.2× 15.2 k/s · 1.16 M/s
float 1/119× 98.3 k/s · 11.7 M/s 1/119× 98.7 k/s · 11.7 M/s 1/135× 87 k/s · 11.7 M/s 1/199× 32.2 k/s · 6.42 M/s 1/13.0× 103 k/s · 1.34 M/s
double 1/16.1× 98.1 k/s · 1.58 M/s 1/16.0× 98.6 k/s · 1.58 M/s 1/25.6× 86.8 k/s · 2.22 M/s 1/51.9× 32.2 k/s · 1.67 M/s 1/6.70× 103 k/s · 688 k/s

Where they sit in the fleet

Keep comparing

Swap sides