簡體   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