#大整数 #基准测试 #大数 #大整

app bigint-benchmark

大整数实现基准测试

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次 下载

MITLGPL-3.0-only

17KB
298

bigint-benchmark-rs

Rust大整数实现基准测试。

每个基准测试运行5次,每次计算至少10秒。使用最快的一次作为结果。

版本 许可证 备注
rug 1.22.0 LGPL 3.0 链接到 GMP
malachite 0.4.0 LGPL 3.0 纯Rust,基于 GMPFLINT
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