Thing Done

← The fleet

PIC18F57Q84 vs Arduino Uno

PIC18F (PIC18F57Q84) at 64 MHz against ATmega328P at 16 MHz, on real hardware, same C kernels, clocks verified.

PIC18F57Q84 Curiosity Nano

PIC18F57Q84

PIC18F (PIC18F57Q84)
Family
PIC / dsPIC
Board
PIC18F57Q84 Curiosity Nano
Clock
64 MHz
float / double
32-bit / 32-bit
Arduino Uno

Arduino Uno

ATmega328P
Family
AVR
Board
Arduino Uno
Clock
16 MHz
float / double
32-bit / 32-bit
Typical gap
1.92×
Arduino Uno faster, geometric mean of 25 cells
Biggest win for PIC18F57Q84
1.16×
uint8_t multiply
Biggest win for Arduino Uno
5.75×
uint32_t multiply
Clock for clock
7.67×
Arduino Uno needs fewer cycles per op (4.00× clock gap)

Operation by operation

Every cell

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

AddSubtractMultiplyDivideModulo
uint8_t 1.10× 538 k/s · 490 k/s 1.03× 504 k/s · 490 k/s 1.16× 520 k/s · 448 k/s 1/1.05× 135 k/s · 142 k/s 1/1.34× 106 k/s · 142 k/s
uint16_t 1/1.59× 328 k/s · 522 k/s 1/1.59× 328 k/s · 522 k/s 1/1.44× 287 k/s · 413 k/s 1/1.12× 62.1 k/s · 69.5 k/s 1.02× 70.6 k/s · 69.5 k/s
uint32_t 1/1.43× 240 k/s · 342 k/s 1/1.43× 240 k/s · 342 k/s 1/5.75× 23.5 k/s · 135 k/s 1/1.01× 24.5 k/s · 24.8 k/s 1.15× 28.6 k/s · 24.8 k/s
uint64_t not measurednot measurednot measurednot measurednot measured
float 1/2.63× 37.4 k/s · 98.3 k/s 1/3.11× 31.7 k/s · 98.7 k/s 1/3.86× 22.6 k/s · 87 k/s 1/3.16× 10.2 k/s · 32.2 k/s 1/5.19× 19.8 k/s · 103 k/s
double 1/2.62× 37.4 k/s · 98.1 k/s 1/3.11× 31.7 k/s · 98.6 k/s 1/3.85× 22.6 k/s · 86.8 k/s 1/3.16× 10.2 k/s · 32.2 k/s 1/5.19× 19.8 k/s · 103 k/s

Where they sit in the fleet

Keep comparing

Swap sides