gpt4 book ai didi

c++ - 具有小整数有效加法的 Bignum 实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:46:19 25 4
gpt4 key购买 nike

我一直在使用 python 的 native bignums 作为算法,并决定通过将其转换为 C++ 来尝试加速它。当我使用 long longs 时,C++ 比 python 快大约 100 倍,但是当我在 C++ 中使用 GMP 绑定(bind)时,它只比 python 快 10 倍(对于适合 long longs 的相同情况)。

是否有更好的 bignum 实现来进行大量的小加法?例如,我们有一个大数 N,我们将添加很多小的 +1、+21、+1 等,并且每隔一段时间添加另一个大数 M?

最佳答案

GMP 库本身有一个 fast short integer add to MPZ routine

void mpz_add_ui (mpz_t rop, mpz_t op1, unsigned long int op2)

我不知道 gmpy 是否使用它,但如果它确实使用它,请尝试将普通 python int 添加到 mpz 与将 mpz 添加到 mpz 并查看它是否更快。

编辑

我尝试了一些基准测试,发现它没有任何区别

$ python -m timeit -c 'from gmpy import mpz
> a=mpz(10**1000)' 'a+1'
100000 loops, best of 3: 5.4 usec per loop

$ python -m timeit -c 'from gmpy import mpz
a=mpz(10**1000); b=mpz(1)' 'a+b'
100000 loops, best of 3: 5.5 usec per loop

所以我猜 gmpy 不使用 mpz_add_ui 因为我真的希望它快得多。

关于c++ - 具有小整数有效加法的 Bignum 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1831212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com