9个版本
新版本 0.2.7 | 2024年8月14日 |
---|---|
0.2.6 | 2024年7月6日 |
0.2.4 | 2024年6月2日 |
0.2.3 | 2024年5月30日 |
0.1.0 | 2023年9月2日 |
#249 in 数学
每月 78 次下载
210KB
6K SLoC
twibint
Rust crate,用于任意大整数(有符号或无符号)的运算。
此crate不需要任何依赖,仅依赖于标准库。一些依赖项是可选的,取决于特定的功能(见下方的功能列表)。
此crate的主要API是导出2个类型:BigUint和BigInt,用于表示绝对值任意大的无符号或有符号整数。它们几乎可以像常规整数一样使用,尽管它们不实现Copy
特性。
构建、文档、基准测试和测试可以通过以下方式获得
cargo build
cargo docs
cargo test
对于基准测试,请访问benches
文件夹。
性能
有关性能的更多详细信息和分析脚本可在benches
文件夹中找到。
TL;DR -> 目前twibint(v0.2.7)的性能状态是:加法、减法和乘法的速度比Python整数快,并且在某些规模上比num-bigint
快。除法仍然非常慢。
功能列表
rand
:导出函数gen_random_biguint
:允许生成具有特定位数数的随机整数。使用rand
crate作为依赖项。pyo3
:仅用于生成Python绑定,它只能通过pip install .
命令间接使用。使用pyo3
crate作为依赖项。unsafe
:启用使用不安全Rust的加速。默认启用。可以通过标志--no-default-features
禁用,以使用纯安全Rust(编译时强制执行)。
作为Python包安装
只需从基础目录使用即可
python3 -m pip install .
这个crate在加法和乘法运算上似乎比默认的Python整数在超过一定位数(1000到10000位之间)时更快。
Python测试可以在pytest
框架中运行。它们位于tests
文件夹中,并应提供足够的示例用法。使用以下命令运行测试:
pytest tests
Python默认整数性能比较可在benches
文件夹中找到。
0.2版本更改日志
这个新版本在x86_64机器上的加法、减法和乘法运算方面进行了大量的加速。我没有使用x86的现代扩展,因此这些加速应该可以在这一系列机器之间移植。这也可能对许多其他功能产生性能影响。
这些加速主要归因于移除了核心循环中的内联汇编,并基于unsafe
Rust。其他使用的unsafe
功能包括通过指针智能地在&[u32]
和&[u64]
切片之间切换(当对齐幸运时)。
要禁用任何unsafe
代码,请使用带有标志--no-default-features
的慢速体验,但完全使用安全的Rust编译。
依赖项
~0–5.5MB
~13K SLoC