gpt4 book ai didi

python - 有什么方法可以加快 Python long int 按位运算的速度吗?

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:58 24 4
gpt4 key购买 nike

我正在用 Python 编写国际象棋程序,我使用 python-chess用于棋盘表示和移动生成等。它通常非常好并且具有非常有用的功能。

但是,由于它是纯 Python 编写的,它现在是我的 AI 的瓶颈。 Python长整型及其按位运算在eg模块中大量使用

x = b & -b
b ^= x

if not x & 0xffffffff:
x >>= 32
r |= 32

有没有办法通过其他模块来加速 Python 中的这种操作?不用用 C 或 Fortran 重写就可以吗?我试过 numba包,但它似乎无法编译python long int。

非常感谢。

最佳答案

我维护 gmpy2 库,它支持通常比 Python 的原生整数更快的整数运算。

这是一个简单的例子:

In [3]: x=12345678901234567890
In [4]: %timeit y=x;y>>=32
10000000 loops, best of 3: 113 ns per loop
In [5]: x=gmpy2.mpz(x)
In [6]: %timeit y=x;y>>=32
10000000 loops, best of 3: 71.9 ns per loop

mpz 类型的行为几乎与 Python long 相同,因此它应该是直接替代品。 gmpy2 还支持称为 xmpz 的可变整数类型。它支持直接位操作,并且对于就地操作可能更快。

In [9]: x=gmpy2.xmpz(0)
In [10]: bin(x)
Out[10]: '0b0'
In [11]: x[4]=1
In [12]: bin(x)
Out[12]: '0b10000'

要利用 xmpz 类型的所有性能优势,您可能需要修改您的逻辑和/或代码。

关于python - 有什么方法可以加快 Python long int 按位运算的速度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27593999/

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