robot icon indicating copy to clipboard operation
robot copied to clipboard

Improve the hash rate of the Hash function

Open dkrutsko opened this issue 4 years ago • 0 comments

Currently, the Hash class has abysmal performance when compared to other CRC32 algorithms. Looking at our options here, here and here, it's clear that there's a lot of improvements which could be made. Read the table below to see how we compare (Ignore the differences in the result as the comparison uses the iSCSI/Castagnoli polynomial where as we use the Ethernet/ZIP one).

Option Result Performance
Naive - CPP 0xA0B96C51 147.0 MB/s = 0.29 bits/cycle
Tabular - 1 byte 0xA0B96C51 556.6 MB/s = 1.11 bits/cycle
Robot - Hash 0x1D75653D 561.1 MB/s = 1.12 bits/cycle
Tabular - 2 bytes 0xA0B96C51 795.3 MB/s = 1.59 bits/cycle
Hardware - 1 byte 0xA0B96C51 1324.1 MB/s = 2.65 bits/cycle
Tabular - 4 bytes 0xA0B96C51 1369.0 MB/s = 2.74 bits/cycle
Tabular - 8 bytes 0xA0B96C51 2416.1 MB/s = 4.83 bits/cycle
Checksums - AWS 0x1D75653D 2682.3 MB/s = 5.36 bits/cycle
Tabular - 16 bytes 0xA0B96C51 4011.5 MB/s = 8.02 bits/cycle
Hardware - 8 bytes 0xA0B96C51 10538.0 MB/s = 21.08 bits/cycle
Golden - AMD 0xA0B96C51 19564.9 MB/s = 39.13 bits/cycle
Golden - Intel 0xA0B96C51 30507.4 MB/s = 61.01 bits/cycle

dkrutsko avatar Apr 15 '21 01:04 dkrutsko