Ну, почти наверняка случается так, что битовый сдвиг быстрее, когда типы заранее не известны.Но мы можем быть умными.Давайте проверим:
In [11]: 2**20-37
Out[11]: 1048539
In [12]: timeit 1048539 >> 14
10000000 loops, best of 3: 29 ns per loop
In [13]: 2**14
Out[13]: 16384
In [14]: timeit 1048539 /16384
10000000 loops, best of 3: 72.2 ns per loop
In [15]: timeit 1048539 //16384
10000000 loops, best of 3: 29.1 ns per loop
Обратите внимание на последний случай: если мы специализируемся на целых числах с //
, это почти точно так же!
Особенно в Python, где типы заранее не известны, иначе сложно оптимизировать подобные вещи.С другой стороны, это означает, что /
будет работать и с нецелыми числами - что может быть ошибкой или функцией, в зависимости от того, что вы на самом деле делаете.