-
Notifications
You must be signed in to change notification settings - Fork 41
Open
Labels
RequestA cool feature request for the libraryA cool feature request for the library
Milestone
Description
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 |
Metadata
Metadata
Assignees
Labels
RequestA cool feature request for the libraryA cool feature request for the library