对于Python 3.x整数,比位移快两倍?
我正在查看sorted_containers的来源,很惊讶地看到这一行: self._load, self._twice, self._half = load, load * 2, load >> 1 这load是整数。为什么在一个位置使用位移,而在另一位置使用乘法?移位可能比整数除以2快,但这是合理的,但是为什么不还用移位代替乘法呢?我对以下情况进行了基准测试: (时间,分) (班次,班次) (时间,班次) (平移,除法) 并发现#3始终比其他替代方法快: # self._load, self._twice, self._half = load, load * 2, load >> 1 import random import timeit import pandas as pd x = random.randint(10 ** 3, 10 ** 6) def test_naive(): a, b, …