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

Hyu*_*woo 4 python operators python-3.x

我试图来衡量之间的性能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"))
Run Code Online (Sandbox Code Playgroud)

我开始这个实验的原因是我不想在列表理解中做同样的操作.

由于运算符出现一次,(例如,(item-3) * (item*3)(item-3)**2)我认为(item-3)**2会比它更快(item-3)*(item-3).但这完全相反.

有谁能解释为什么?

[+]我使用的是python3.6.0

Ali*_*den 5

因为*是一个深深植根于处理器的算术运算,并且**pow函数的包装器.

使用k ** 2有更多的开销,k * k因为python将在内部调用pow函数.