繁体   English   中英

为什么v * v比python中的v ** 2快

[英]Why v*v is faster than v**2 in python

我试着测量v*vv**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 ** 2k * k具有更多的开销,因为python将在内部调用pow函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM