Skip to content

Instantly share code, notes, and snippets.

@timonsku
Last active August 7, 2018 23:11
Show Gist options
  • Save timonsku/a64591ff2363e593418a52da9ba5f508 to your computer and use it in GitHub Desktop.
Save timonsku/a64591ff2363e593418a52da9ba5f508 to your computer and use it in GitHub Desktop.
Benchmarking CRC on SAMD51 and SAMD21. I tried to find the max buffer size one each would accept before either not compiling or crapping out.

Graph made by Greys (Thanks to Greys for the nice Graph)

SAMD21 Cortex M0+ @ 48MHz:
1KB
Maxim (iButton) FastCRC:	Value:0x78, Time: 353 us (23.21 mbs)
Maxim (iButton) builtin:	Value:0x78, Time: 2213 us (3.70 mbs)
MODBUS FastCRC:	Value:0x2487, Time: 336 us (24.38 mbs)
MODBUS builtin: 	Value:0x2487, Time: 2337 us (3.51 mbs)
XMODEM FastCRC:	Value:0x190E, Time: 339 us (24.17 mbs)
XMODEM builtin: 	Value:0x190E, Time: 2378 us (3.44 mbs)
MCRF4XX FastCRC:	Value:0xF5F5, Time: 338 us (24.24 mbs)
MCRF4XX builtin:	Value:0xF5F5, Time: 431 us (19.01 mbs)
KERMIT FastCRC:	Value:0x318, Time: 337 us (24.31 mbs)
Ethernet FastCRC:	Value:0xE13699FF, Time: 347 us (23.61 mbs)

10KB
Maxim (iButton) FastCRC:	Value:0xE8, Time: 3520 us (23.27 mbs)
Maxim (iButton) builtin:	Value:0xE8, Time: 22102 us (3.71 mbs)
MODBUS FastCRC:	Value:0x27D2, Time: 3344 us (24.50 mbs)
MODBUS builtin: 	Value:0x27D2, Time: 23381 us (3.50 mbs)
XMODEM FastCRC:	Value:0x1A34, Time: 3354 us (24.42 mbs)
XMODEM builtin: 	Value:0x1A34, Time: 23845 us (3.44 mbs)
MCRF4XX FastCRC:	Value:0xE2B8, Time: 3340 us (24.53 mbs)
MCRF4XX builtin:	Value:0xE2B8, Time: 4294 us (19.08 mbs)
KERMIT FastCRC:	Value:0x2CDC, Time: 3345 us (24.49 mbs)
Ethernet FastCRC:	Value:0xB9E598DC, Time: 3434 us (23.86 mbs)

29KB
Maxim (iButton) FastCRC:	Value:0x2E, Time: 10189 us (23.32 mbs)
Maxim (iButton) builtin:	Value:0x2E, Time: 64098 us (3.71 mbs)
MODBUS FastCRC:	Value:0x1315, Time: 9685 us (24.53 mbs)
MODBUS builtin: 	Value:0x1315, Time: 67821 us (3.50 mbs)
XMODEM FastCRC:	Value:0x212B, Time: 9725 us (24.43 mbs)
XMODEM builtin: 	Value:0x212B, Time: 69129 us (3.44 mbs)
MCRF4XX FastCRC:	Value:0x7FFE, Time: 9685 us (24.53 mbs)
MCRF4XX builtin:	Value:0x7FFE, Time: 12445 us (19.09 mbs)
KERMIT FastCRC:	Value:0x7C4, Time: 9684 us (24.53 mbs)
Ethernet FastCRC:	Value:0x612BCE88, Time: 9958 us (23.86 mbs)


SAMD51 Cortex M4 @ 120MHz:
1KB
Maxim (iButton) FastCRC:	Value:0x78, Time: 104 us (78.77 mbs)
Maxim (iButton) builtin:	Value:0x78, Time: 685 us (11.96 mbs)
MODBUS FastCRC:	Value:0x2487, Time: 59 us (138.85 mbs)
MODBUS builtin: 	Value:0x2487, Time: 675 us (12.14 mbs)
XMODEM FastCRC:	Value:0x190E, Time: 60 us (136.53 mbs)
XMODEM builtin: 	Value:0x190E, Time: 744 us (11.01 mbs)
MCRF4XX FastCRC:	Value:0xF5F5, Time: 59 us (138.85 mbs)
MCRF4XX builtin:	Value:0xF5F5, Time: 120 us (68.27 mbs)
KERMIT FastCRC:	Value:0x318, Time: 59 us (138.85 mbs)
Ethernet FastCRC:	Value:0xE13699FF, Time: 66 us (124.12 mbs)

10KB
Maxim (iButton) FastCRC:	Value:0xE8, Time: 1027 us (79.77 mbs)
Maxim (iButton) builtin:	Value:0xE8, Time: 6838 us (11.98 mbs)
MODBUS FastCRC:	Value:0x27D2, Time: 520 us (157.54 mbs)
MODBUS builtin: 	Value:0x27D2, Time: 6753 us (12.13 mbs)
XMODEM FastCRC:	Value:0x1A34, Time: 523 us (156.63 mbs)
XMODEM builtin: 	Value:0x1A34, Time: 7437 us (11.02 mbs)
MCRF4XX FastCRC:	Value:0xE2B8, Time: 523 us (156.63 mbs)
MCRF4XX builtin:	Value:0xE2B8, Time: 1197 us (68.44 mbs)
KERMIT FastCRC:	Value:0x2CDC, Time: 523 us (156.63 mbs)
Ethernet FastCRC:	Value:0xB9E598DC, Time: 552 us (148.41 mbs)

29KB
Maxim (iButton) FastCRC:	Value:0x2E, Time: 2976 us (79.83 mbs)
Maxim (iButton) builtin:	Value:0x2E, Time: 19827 us (11.98 mbs)
MODBUS FastCRC:	Value:0x1315, Time: 1496 us (158.80 mbs)
MODBUS builtin: 	Value:0x1315, Time: 19580 us (12.13 mbs)
XMODEM FastCRC:	Value:0x212B, Time: 1497 us (158.70 mbs)
XMODEM builtin: 	Value:0x212B, Time: 21563 us (11.02 mbs)
MCRF4XX FastCRC:	Value:0x7FFE, Time: 1497 us (158.70 mbs)
MCRF4XX builtin:	Value:0x7FFE, Time: 3471 us (68.44 mbs)
KERMIT FastCRC:	Value:0x7C4, Time: 1496 us (158.80 mbs)
Ethernet FastCRC:	Value:0x612BCE88, Time: 1564 us (151.90 mbs)

63KB
Maxim (iButton) FastCRC:	Value:0xC6, Time: 6461 us (79.88 mbs)
Maxim (iButton) builtin:	Value:0xC6, Time: 43071 us (11.98 mbs)
MODBUS FastCRC:	Value:0x24D4, Time: 3240 us (159.29 mbs)
MODBUS builtin: 	Value:0x24D4, Time: 42533 us (12.13 mbs)
XMODEM FastCRC:	Value:0xFC6C, Time: 3241 us (159.24 mbs)
XMODEM builtin: 	Value:0xFC6C, Time: 46840 us (11.02 mbs)
MCRF4XX FastCRC:	Value:0x5372, Time: 3242 us (159.19 mbs)
MCRF4XX builtin:	Value:0x5372, Time: 7539 us (68.46 mbs)
KERMIT FastCRC:	Value:0xE0E9, Time: 3240 us (159.29 mbs)
Ethernet FastCRC:	Value:0x8BBB4973, Time: 3395 us (152.02 mbs)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment