为什么hash()在python3.4和python2.7下比较慢
我正在使用timeit进行一些性能评估,并发现python 2.7.10和python 3.4.3之间的性能降级.我把它缩小到hash()函数: python 2.7.10:
python 3.4.3:
那是一个约.降低40%!整数,浮点数,字符串(unicodes或bytearrays)等是否被散列似乎并不重要;退化大致相同.在这两种情况下,哈希都返回64位整数.以上是在我的Mac上运行,并在Ubuntu盒子上得到了较小的降级(20%). 我也在python2.7测试中使用PYTHONHASHSEED = random,在某些情况下,为每个“case”重新启动python,我看到hash()性能变得更糟,但从未像python3.4那样慢 谁知道这里发生了什么?是否为python3选择了更安全但更慢的哈希函数? 最佳答案
在Python 2.7和Python 3.4之间的hash()函数有两处变化
>收养SipHash 参考文献: >从Python 3.4起,它使用SipHash作为散列函数.阅读:Python adopts SipHash (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |