假设我使用numpy数组表示两个bitboards:
import numpy
bitboard = numpy.zeros(2, dtype=numpy.int64)
让我们说我想设置第一个位板的第10位。最快的方法是什么?
我能想到两种方式。这是第一种方式:
numpy.bitwise_or(a[0], numpy.left_shift(1, 10), out=a, where=(True, False))
这是第二种方式:
a[0] |= 1 << 10
哪一个更快?有没有其他方法可以做到这一点?特别是,我想知道:
a[0]
时,numpy会返回int64
还是Python long
?long
,那么我假设两种方法都很慢,因为它们处理任意精度的数字。我是否正确地假设?请注意,我使用的是Python版本3。
答案 0 :(得分:1)
哪一个更快?还有其他办法吗?
第二种方法更快。
当我访问
a[0]
时,numpy会返回int64
还是Pythonlong
?
它会返回int64
。
如果它返回Python
long
,那么我假设两种方法都很慢,因为它们处理任意精度的数字。我是否正确地假设?
此主题中的更多详细信息:Slow bitwise operations