An open API service indexing awesome lists of open source software.

https://github.com/calebzulawski/autobahn-hash

A fast, safe, and portable implementation of HighwayHash for Rust
https://github.com/calebzulawski/autobahn-hash

hash hash-functions hashing highwayhash simd

Last synced: 6 months ago
JSON representation

A fast, safe, and portable implementation of HighwayHash for Rust

Awesome Lists containing this project

README

          

AutobahnHash
============
[![Crates.io](https://img.shields.io/crates/v/autobahn-hash)](https://crates.io/crates/autobahn-hash)
[![Rust Documentation](https://img.shields.io/badge/api-rustdoc-blue.svg)](https://docs.rs/autobahn-hash)
[![License](https://img.shields.io/crates/l/autobahn-hash)](https://crates.io/crates/autobahn-hash)

A pure Rust implementation of [HighwayHash](https://github.com/google/highwayhash).

A few highlights:
* No `unsafe`
* Fuzzed against the reference implementation
* Minimal crate with few required dependencies
* Portable to any SIMD instruction set (and reasonably fast without SIMD)

This crate requires the `portable_simd` nightly feature.

## Benchmarks
The following benchmarks were done on an Intel i7-9750H, to give an idea of the performance profile.
These two benchmarks can help predict best- and worst-case performance.

### Slices
The HighwayHash algorithm performs best on long slices of data:
![slice benchmark](assets/slice.png)

### Non-slice data
Worst-case performance can be predicted with non-slice data: `struct Data(u8, u16, u32, u64);`
![struct benchmark](assets/struct.png)

## License
AutobahnHash is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See [LICENSE-APACHE](LICENSE-APACHE) and [LICENSE-MIT](LICENSE-MIT) for details.