interzone 1.0.24
Interzone is the dart API to talk with moderator, a tiny ephemeral forum
Dart Fast Hash
A collection of fast non-cryptographic hashing algorithms for dart.
Algorithms Implemented
- xxHash - A very fast hashing algorithm with high quality.
- ...
Work In Progress
This project is a work in progress that is being developed because I need these algorithms for another project. I'll spend time implementing more algorithms depending on demand, need, or community interest.
Sponsor Me
Please consider sponsoring me if you are using this library, need help, or if you want to discuss specific algorithms or need a specific algorithm implemented.
Related References
-
Wikipedia has a great overview that includes key concepts, a list of well known algorithms, and more. However, in practice, most of us just want a fast algorithm with negligible risk of collision against our input data set and with our key space. In that regard, selecting the right hashing algorithm for a specific purpose is often not only about speed, but also about the overall intent of use. Each algorithm may have pros/cons depending on the input data and how the hash is going to be used (e.g., small input, large input, uniformity of input/output, collision tolerance).
-
SMHasher is a C/C++ benchmarking test suite with an interesting fork history. The most actively maintained version (at time of writing) is the fork by Reini Urban. It includes performance and quality data for the most well known algorithms as well as summary recommendations based on those results. Just be aware that those results are probably the most optimal implementations available (because everything is in C/C++).
-
xxHash (C library) has some of the fastest and highest quality hash algorithms known at time of writing. However, your mileage may vary widely with implementations written in other languages due to language limitations or quality of implementation (or advanced tricks used to help take advantage of hardware ops). In any case the project itself has some very useful information and performance results as well.
-
Guava Hashing (from the Guava Java library) also has a lot of great information and practical advice.
-
Zero Allocation Hashing is a Java library from the OpenHFT project. It's a useful reference to see an example of a library that was designed to use lean object allocation that is also platform-endianness-agnostic.