Bignum库,慢素发生器

时间:2010-11-19 17:08:23

标签: c primes bignum arbitrary-precision

我正在开发一个bignum图书馆:http://pastebin.com/nFgF3zjW 我实现了Miller-Rabin算法(isprime()),但与OpenSSL的BN_is_prime_fasttest相比,它非常慢。

我尝试过分析,执行次数最多的函数是bn_shr_atomicbn_cmp。 知道如何让它更快吗?

2 个答案:

答案 0 :(得分:1)

GNU多精度算术库实现了Miller-Rabin。它的文档位于:

http://gmplib.org/manual/Number-Theoretic-Functions.html#Number-Theoretic-Functions

我建议检查它们的实现,以加快计算速度。但是,任意精度算术本身都比使用适合寄存器的数字要慢。

编辑:

在所使用的算法与所得概率的质量之间还存在权衡。也就是说,我不确定OpenSSL使用什么测试。

答案 1 :(得分:0)

大猜测:如果你真的想使用你自己的库,我首先用长除法替换除法算法。

验证我的猜测:你的divison的内循环中有cmp和shr,那些调用是你个人资料中的主要贡献者还是来自其他地方?一般来说,当你分析时,你应该首先看一下更高级别的功能,这些功能是很大的贡献者,改变算法通常比调整低级功能更有益。