[英]Why v*v is faster than v**2 in python
我试着测量v*v
和v**2
之间的性能。 结果如下
# test was generated with randint(1, 999)
# 0.10778516498976387
print(timeit.timeit("sum([item*item for item in test])", number=10000, setup="from __main__ import test"))
# 0.35526178102009
print(timeit.timeit("sum([item**2 for item in test])", number=10000, setup="from __main__ import test"))
我开始这个实验的原因是我不想在列表理解中做同样的操作。
由于操作员出现一次,(例如, (item-3) * (item*3)
和(item-3)**2
)我认为(item-3)**2
将比(item-3)*(item-3)
更快(item-3)*(item-3)
。 但这完全相反。
有谁能解释为什么?
[+]我使用的是python3.6.0
因为*
是深度植根于处理器的算术运算, **
是pow
函数的包装器。
使用k ** 2
比k * k
具有更多的开销,因为python将在内部调用pow函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.