Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/claymcleod/bitbelay
A performance evaluation harness for non-cryptographic hash functions.
https://github.com/claymcleod/bitbelay
hash hashing rust
Last synced: about 2 months ago
JSON representation
A performance evaluation harness for non-cryptographic hash functions.
- Host: GitHub
- URL: https://github.com/claymcleod/bitbelay
- Owner: claymcleod
- License: apache-2.0
- Created: 2024-01-25T00:19:39.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-01-26T05:44:15.000Z (about 1 year ago)
- Last Synced: 2024-04-26T14:45:23.392Z (10 months ago)
- Topics: hash, hashing, rust
- Language: Rust
- Homepage:
- Size: 64.5 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
bitbelay
A performance evaluation harness for non-cryptographic hash functions.
Request Feature
·
Report Bug
·
⭐ Consider starring the repo! ⭐
Bitbelay is a framework for testing the performance and desirable characteristics of
non-cryptographic hashing functions. The project was given this name because (a) it is
concerned with evaluating the characteristics of bits output from hash functions and (b)
["belaying"](https://en.wikipedia.org/wiki/Belaying) evokes imagery of a (test) harness.Bitbelay is designed somewhat differently than other popular hash testing frameworks
[[1][smhasher]]. For example, it does not a ship a single binary that is used to
benchmark performance across multiple hash functions. Instead, it (a) is comprised of a
family of crates that provide high-quality facilities for testing hash functions and (b)
enables hash developers to easily wrap their hash functions in a command line tool for
performance testing.Command line tools are generally written and published containing the facilities for
characterizing an individual hash function. When publishing these on
[crates.io](https://crates.io/) or elsewhere, the convention is to name the crate and/or
associated command line tool as `bitbelay-[HASHNAME]` (e.g., `bitbelay-ahash` for
`ahash`) so that it can be easily identified.## 🎨 Features
* **Advanced hash characterization.** Bitbelay's primary goal is to provide facilities
for characterizing the performance and quality of non-cryptographic hash functions. As
such, it contains an extensive set of tests organized into a collection of
purpose-built test suites.
* **Multiple data providers.** Bitbelay includes a range of data providers to facilitate
the assessment of hash functions against a variety of input data types. This diversity
allows for a more comprehensive understanding of hash function performance across
different scenarios. Further, custom data providers can be seamlessly integrated into
the framework.
* **Drop-in testing for hash function development.** Bitbelay aims to ease the process
of developing hash functions—especially in Rust! To accomplish this, it includes
facilities to easily wrap a hash function as a command-line tool within which a
battery of tests can be employed.## 📚 Getting Started
You can add `bitbelay` as a dependency via the Github repository.
```bash
cargo add bitbelay
```Next, you can use the `bitbelay::cli::wrapper()` function to quickly wrap a hash
function of interest and produce a command-line tool for evaluating it. For this
example, we simply pull in Rust's d```rust
use std::hash::RandomState;pub fn main() -> anyhow::Result<()> {
bitbelay::cli::wrapper(RandomState::default())
}
```## Examples
You can also take a look at the
[examples](https://github.com/claymcleod/bitbelay/tree/main/bitbelay/examples) to
get a sense of the various ways you can use the crate.## 🖥️ Development
To bootstrap a development environment, please use the following commands.
```bash
# Clone the repository
git clone [email protected]:claymcleod/bitbelay.git
cd bitbelay# Build the crate in release mode
cargo build --release# List out the examples
cargo run --release --example
```## 🚧️ Tests
Before submitting any pull requests, please make sure the code passes the following
checks.```bash
# Run the project's tests.
cargo test --all-features# Ensure the project doesn't have any linting warnings.
cargo clippy --all-features# Ensure the project passes `cargo fmt`.
cargo fmt --check# Ensure the docs build successfully.
cargo doc
```## Minumum Supported Rust Version (MSRV)
As bitbelay is pre-1.0, no MSRV is yet asserted.
## 🤝 Contributing
Contributions, issues and feature requests are welcome! Feel free to check [issues
page](https://github.com/claymcleod/bitbelay/issues).## 📝 License
This project is licensed as either [Apache 2.0][license-apache] or [MIT][license-mit] at
your discretion.Copyright © 2024-Present [Clay McLeod](https://github.com/claymcleod).
[license-apache]: https://github.com/claymcleod/bitbelay/blob/master/LICENSE-APACHE
[license-mit]: https://github.com/claymcleod/bitbelay/blob/master/LICENSE-MIT[smhasher]: https://github.com/rurban/smhasher