python - Python:除法与移位
问题描述
在python中,有
division (//, /) and shift (>>, <<).
在性能方面,移位运算符更有利?!
使用移位而不是除法运算符有什么好处吗?!
解决方案
使用以下代码测量后,偏移似乎有点慢,但并不显着,它在我的电脑上,你的结果可能会有所不同。
我得到以下答案:
It took 42.1938125s for division by 2
It took 43.217766499999996s for integer division by 2
It took 47.926054599999986s for shift by 1
It took 41.82601500000001s for division by 4
It took 43.20513730000002s for integer division by 4
It took 48.33005560000004s for shift by 2
import timeit
import random
random.seed(42)
DATA = [random.randint(0,10000) for _ in range(400)]
def measure(func, name):
time = timeit.timeit(lambda: [func(val) for val in DATA], number=1000000)
print(f"It took {time}s for {name}")
measure(lambda x:x / 2, "division by 2")
measure(lambda x:x // 2, "integer division by 2")
measure(lambda x:x >> 1, "shift by 1")
measure(lambda x:x / 4, "division by 4")
measure(lambda x:x // 4, "integer division by 4")
measure(lambda x:x >> 2, "shift by 2")
推荐阅读
- python - Django 500 错误页面不加载 CSS 文件
- kurento - 通过 kurento 以块或段的形式记录流
- git - 詹金斯-Git-找不到存储库
- php - Wordpress 过滤 Woocommerce 结构化数据
- java - 有没有弹簧启动但只有弹簧的 cron 调度程序
- apache - SaaS应用程序自动生成虚拟主机
- elasticsearch - 我们如何在 Elasticserach+fluentbit+kibana 中进行警报?
- typescript - @admin-bro/nestjs 与 @admin-bro/sequelize 和 mysql ?出现错误 NoResourceAdapterError
- machine-learning - 如何使用带注意力的 Seq2Seq 编码器-解码器模型进行多步预测
- html - 我设置了背景图像,但除非我以像素或 vh 为单位指定高度,否则它不会显示