2 个版本

0.1.1 2024 年 1 月 26 日
0.1.0 2024 年 1 月 25 日

#432 in 测试


用于 bitbelay

MIT/Apache

220KB
2.5K SLoC

bitbelay

CI: Status License: Apache 2.0 License: MIT

非加密哈希函数的性能评估工具。

请求功能 · 报告错误 · ⭐ 考虑收藏仓库!⭐

Bitbelay 是一个用于测试非加密哈希函数性能和期望特性的框架。该项目之所以命名为 Bitbelay,是因为 (a) 它关注评估哈希函数输出的比特特性,以及 (b) “belaying” 联想到(测试)工具。

Bitbelay 的设计与其他流行的哈希测试框架有所不同 [1]。例如,它不会提供单个二进制文件,用于在多个哈希函数之间进行性能基准测试。相反,它 (a) 由一系列提供测试哈希函数高质量功能的 crate 组成,并且 (b) 使哈希开发者能够轻松地将他们的哈希函数包装在命令行工具中进行性能测试。

命令行工具通常包含描述单个哈希函数特性的功能,并在 crates.io 或其他地方发布时,约定将 crate 和/或相关的命令行工具命名为 bitbelay-[HASHNAME](例如,bitbelay-ahash 对于 ahash),以便于识别。

🎨 特性

  • 高级哈希描述。 Bitbelay 的主要目标是提供用于描述非加密哈希函数性能和质量的工具。因此,它包含了一系列精心构建的测试套件。
  • 多个数据提供者。 Bitbelay 包含一系列数据提供者,以方便对各种输入数据类型进行哈希函数评估。这种多样性使得我们可以更全面地了解哈希函数在不同场景下的性能。此外,可以无缝地将自定义数据提供者集成到框架中。
  • 哈希函数开发的即插即用测试。 Bitbelay 的目标是简化哈希函数的开发过程——特别是在 Rust 中!为此,它包括将哈希函数包装为命令行工具的设施,在其中可以运行一系列测试。

📚 开始使用

您可以通过 GitHub 仓库将 bitbelay 添加为依赖项。

cargo add bitbelay

接下来,您可以使用 bitbelay::cli::wrapper() 函数快速包装感兴趣的哈希函数,并生成一个用于评估它的命令行工具。例如,我们只需导入 Rust 的 d

use std::hash::RandomState;

pub fn main() -> anyhow::Result<()> {
    bitbelay::cli::wrapper(RandomState::default())
}

示例

您还可以查看 示例,了解您可以使用此 crate 的各种方法。

🖥️ 开发

要设置开发环境,请使用以下命令。

# 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

🚧️ 测试

在提交任何拉取请求之前,请确保代码通过以下检查。

# 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

最低支持的 Rust 版本 (MSRV)

由于 bitbelay 的版本在 1.0 以下,因此尚未声明 MSRV。

🤝 贡献

欢迎贡献、问题报告和功能请求!请随意查看 问题页面

📝 许可证

此项目以 Apache 2.0 或 MIT 许可证发布,具体取决于您的选择。

版权所有 © 2024-至今 Clay McLeod

依赖项

~10–22MB
~256K SLoC