CRC calculation uses a trick to avoid the need to process data in stages: it uses a lookup table that allows you to process multiple bits at once.
Processing bits n
immediately requires a lookup table of size 2^n
. The implementations you linked read 1 byte (8 bits) at a time, and indeed, they all use a lookup table of size 256 == 2 ^ 8.
To process 64 bits at a time, you need a lookup table of size 2 ^ 64, which is impractical. This is why common CRC implementations process 1 byte at a time.
While it is possible to process 2 bytes at a time using an array with an array of 65536, this can adversely affect performance due to the use of more processor cache memory.
source share