Skip to content

Instantly share code, notes, and snippets.

@israellot
Last active September 26, 2022 16:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save israellot/c4c29ee56039d53e16e66a3f6b1faffb to your computer and use it in GitHub Desktop.
Save israellot/c4c29ee56039d53e16e66a3f6b1faffb to your computer and use it in GitHub Desktop.
Expert Checksum
public static unsafe uint ChecksumExpert(ReadOnlySpan<byte> arr)
{
if (arr.Length == 0) return 0;
fixed (byte* ptr = arr)
{
uint sum = 0;
int z = 0;
var limit = arr.Length - 32;
while (z < limit)
{
sum += BinaryPrimitives.ReverseEndianness(*(uint*)(ptr + z));
sum += BinaryPrimitives.ReverseEndianness(*(uint*)(ptr + z + 4));
sum += BinaryPrimitives.ReverseEndianness(*(uint*)(ptr + z + 8));
sum += BinaryPrimitives.ReverseEndianness(*(uint*)(ptr + z + 12));
sum += BinaryPrimitives.ReverseEndianness(*(uint*)(ptr + z + 16));
sum += BinaryPrimitives.ReverseEndianness(*(uint*)(ptr + z + 20));
sum += BinaryPrimitives.ReverseEndianness(*(uint*)(ptr + z + 24));
sum += BinaryPrimitives.ReverseEndianness(*(uint*)(ptr + z + 28));
z += 32;
}
...
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment