[英]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.