缓慢的按位运算

缓慢的按位运算,第1张

缓慢的按位运算

据我所知,内置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


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5673351.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存