6个版本 (3个破坏性更新)
0.4.0 | 2023年9月21日 |
---|---|
0.3.0 | 2022年10月24日 |
0.2.2 | 2022年6月9日 |
0.2.1 | 2021年11月3日 |
0.1.0 | 2021年3月12日 |
#13 in #大整
每月26次 下载
17KB
298 行
bigint-benchmark-rs
Rust大整数实现基准测试。
每个基准测试运行5次,每次计算至少10秒。使用最快的一次作为结果。
库
库 | 版本 | 许可证 | 备注 |
---|---|---|---|
rug | 1.22.0 | LGPL 3.0 | 链接到 GMP |
malachite | 0.4.0 | LGPL 3.0 | 纯Rust,基于 GMP 和 FLINT |
dashu | 0.4.0 | MIT 或 Apache 2.0 | Fork自 ibig. 纯Rust,无std |
ibig | 0.3.6 | MIT 或 Apache 2.0 | 纯Rust,无std |
num-bigint | 0.4.4 | MIT 或 Apache 2.0 | 纯Rust,无std |
结果
库 | e 100k | e 1m | e 10m | fib 10m | fib 100m | fib_hex 100m |
---|---|---|---|---|---|---|
rug | 0.014 | 0.257 | 4.270 | 0.287 | 4.952 | 0.876 |
malachite | 0.043 | 0.927 | 15.770 | 1.192 | 21.461 | 3.349 |
dashu | 0.029 | 0.936 | 29.731 | 1.157 | 39.093 | 8.270 |
ibig | 0.032 | 1.026 | 32.526 | 1.252 | 42.055 | 8.732 |
num-bigint | 0.083 | 6.735 | 642.791 | 9.810 | 924.154 | 9.042 |
秒数。
用法
计算 e 的100位并比较答案
$ bigint-benchmark --task e --lib ibig --lib num-bigint --lib rug --lib malachite --lib dashu -n 100 print
answer = 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427
ibig agrees
num-bigint agrees
rug agrees
malachite agrees
dashu agrees
计算第500个斐波那契数并比较答案
$ bigint-benchmark --task fib --lib ibig --lib num-bigint --lib rug --lib malachite --lib dashu -n 500 print
answer = 139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125
ibig agrees
num-bigint agrees
rug agrees
malachite agrees
dashu agrees
基准测试计算 e 的百万位
$ bigint-benchmark --task e --lib ibig --lib num-bigint --lib rug --lib malachite --lib dashu -n 1000000 benchmark
任务
任务 | 描述 | 难度 | 算法 | 操作 |
---|---|---|---|---|
e |
e 的 n 位 | 难 | 二分法 | 加法、乘法、除法、指数、基转换 |
fib |
第 n 个斐波那契数 | 中 | 矩阵指数 | 加法、乘法、基转换 |
fib_hex |
第 n 个斐波那契数的十六进制表示 | 易 | 矩阵指数 | 加法、乘法 |
依赖项
~12MB
~229K SLoC