Updated version of CrC calculations by Mecanix #933
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Updated crc files from Mecanix
[quote from Mecanix]
Had a pretty severe sense of humour failure today after finding out that my ISR was choking on sending & receiving asic packets. Turned out to be that dead-slow array shuffling madness (a.k.a.crcin[]/crcout[]) from that 1968 style CRC5().
See attached for a reworked ver of that. Some more on the crc16. Benchmark below:
GCC, Optimization level: -Ofast (production/release)
Cycles (Optimized): 529
Cycles (Slow crc5): 1114
Cycles (Optimized): 452
Cycles (Slow crc5): 1103
Verdict: 2.44X FASTER
GCC, Optimization level: -Og (dev/debug)
Cycles (Optimized): 3266
Cycles (Slow crc5): 3938
Cycles (Optimized): 3227
Cycles (Slow crc5): 3931
Verdict: 1.22X FASTER
When protocol timing and latency matters...