1个不稳定版本

0.1.0 2024年1月25日

#819测试

每月下载28
4个crate中(直接使用3个)

MIT/Apache

24KB
165 代码行

bitbelay

CI: Status License: Apache 2.0 License: MIT

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

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

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

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

命令行工具通常是编写和发布的,其中包含表征单个哈希函数的设施。当在crates.io或其他地方发布这些工具时,惯例是将crate及其/或相关的命令行工具命名为 bitbelay-[HASHNAME](例如,对于 ahash,命名为bitbelay-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())
}

示例

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

🖥️ 开发

要启动开发环境,请使用以下命令。

# 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

🚧️ 测试

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

# 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.0MIT许可证授权。

版权所有 © 2024-至今 Clay McLeod

依赖项

~5MB
~95K SLoC