据我所知,内置Python
3
int是您测试过的唯一一次可一次计算
&一个以上字节的块的选项之一。(我还没有完全弄清楚此 *** 作的NumPy源代码中的所有功能,但看起来似乎没有优化功能来计算大于dtype的块。)
bitarray
逐字节地- bool和每位1位数的NumPy尝试逐点进行,
- 打包的NumPy尝试逐字节进行,并且
- 在
bitstring
源去逐字节,以及做一些事情搞砸了其试图通过用Cython来提高速度,目前为止最慢使得它。
相反,
int根据编译时参数
PYLONG_BITS_IN_DIGIT的值,该运算以15位或30位数字进行。我不知道哪个设置是默认设置。
您可以使用压缩表示形式和较大的dtype加快NumPy的尝试。看起来在我的机器上,32位dtype的运行速度最快,超过了Python
int。我不知道您的设置如何。使用每种格式的10240位值进行测试,我得到
>>> timeit.timeit('a & b', 'import numpy; a = b = numpy.array([0]*160, dtype=numpy.uint64)')1.3918750826524047>>> timeit.timeit('a & b', 'import numpy; a = b = numpy.array([0]*160*8, dtype=numpy.uint8)')1.9460716604953632>>> timeit.timeit('a & b', 'import numpy; a = b = numpy.array([0]*160*2, dtype=numpy.uint32)')1.1728465435917315>>> timeit.timeit('a & b', 'a = b = 2**10240-1')1.5999407862400403
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)