Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CRC64 Jones polynomial with improvements #285

Merged
merged 3 commits into from
May 5, 2024

Conversation

josiahcarlson
Copy link
Contributor

  • Pulled from most recent Valkey, removed Valkey-specific parts
  • 53-73% faster for crc64_jones vs crc64_jones1 on Xeon 2670 v0 @ 2.6ghz
  • 2-2.5x faster for crc64_jones vs crc64_jones1 on Core i3 8130U @ 2.2 ghz
  • 1.6-2.46 bytes/cycle on i3 8130U
  • likely >2x faster than crcspeed on newer CPUs with more resources than a 2012-era Xeon 2670
  • crc64 combine function runs in <50 nanoseconds typical with vector + cache optimizations (~8 microseconds without vector optimizations, ~80 *microseconds without cache, the combination is extra effective)
  • still single-threaded
  • Variations of crccombine.c available (for non-intel arch starting points): josiahcarlson/redis@55642fe#diff-046412072aa4e87484754f261116ea6501d2350747ac1379530da9584834efdd

Tried to make as few changes as possible to both the upstream code, as well as smhasher. This seemed to be a good balance.

* Pulled from most recent Valkey, removed Valkey-specific parts
* 53-73% faster for crc64_jones vs crc64_jones1 on Xeon 2670 v0 @ 2.6ghz
* 2-2.5x faster for crc64_jones vs crc64_jones1 on Core i3 8130U @ 2.2 ghz
* 1.6-2.46 bytes/cycle on i3 8130U
* likely >2x faster than crcspeed on newer CPUs with more resources than a 2012-era Xeon 2670
* crc64 combine function runs in <50 nanoseconds typical with vector + cache optimizations
  (~8 *microseconds* without vector optimizations, ~80 *microseconds without cache,
  the combination is extra effective)
* still single-threaded
* Variations of crccombine.c available (for non-intel arch starting points):
josiahcarlson/redis@55642fe#diff-046412072aa4e87484754f261116ea6501d2350747ac1379530da9584834efdd
@rurban
Copy link
Owner

rurban commented May 5, 2024

The PMP_Multilinear MacOS errors are unrelated. Thanks!

@rurban rurban merged commit a75e2a9 into rurban:master May 5, 2024
9 of 10 checks passed
@josiahcarlson josiahcarlson deleted the add-crc64-and-combine branch May 5, 2024 21:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants