ladybird/Userland/Libraries/LibCrypto/Checksum
Timothy Flynn 62b575ad7c LibCrypto: Implement little endian CRC using the slicing-by-8 algorithm
This implements Intel's slicing-by-8 algorithm for CRC checksums (only
little endian CPUs for now, as I don't have a way to test big endian).

The original paper for this algorithm seems to have disappeared, but
Intel's source code is still available as a reference:

    https://sourceforge.net/projects/slicing-by-8/

As well as other implementations for reference:

    https://docs.rs/slice-by-8/latest/src/slice_by_8/algorithm.rs.html

Using the "enwik8" file as a test (100MB uncompressed, commonly used in
benchmarks: https://www.mattmahoney.net/dc/enwik8.zip), decompression
time decreases from:

    4.89s to 3.52s on Serenity (cold)
    1.72s to 1.32s on Serenity (warm)
    1.06s to 0.92s on Linux
2023-03-31 06:56:05 +02:00
..
Adler32.cpp Everywhere: Use "the SerenityOS developers." in copyright headers 2021-04-29 00:59:26 +02:00
Adler32.h Libraries: Use default constructors/destructors in LibCrypto 2022-03-10 18:04:26 -08:00
ChecksumFunction.h Everywhere: Use "the SerenityOS developers." in copyright headers 2021-04-29 00:59:26 +02:00
CRC32.cpp LibCrypto: Implement little endian CRC using the slicing-by-8 algorithm 2023-03-31 06:56:05 +02:00
CRC32.h Libraries: Use default constructors/destructors in LibCrypto 2022-03-10 18:04:26 -08:00