在Python中哪个更快:x **。5或math.sqrt(x)?
问题内容:
我一直想知道这已经有一段时间了。就像标题中所说的那样,实际功能中哪个更快或更简单地提高一半呢?
更新
这不是过早优化的问题。这仅仅是基础代码实际工作方式的问题。Python代码如何工作的理论是什么?
我向Guido van Rossum发送了一封电子邮件,因为我真的很想知道这些方法的区别。
我的电子邮件:
在Python中,至少有3种方法可以求平方根:math.sqrt,’**’运算符和pow(x,.5)。我只是好奇每个实现方式的差异。说到效率,哪个更好?
他的回应:
pow和**等价;math.sqrt不适用于复数,并且链接到C sqrt()函数。至于哪一个更快,我不知道…
问题答案:
math.sqrt(x)
比快得多x**0.5
。
import math
N = 1000000
%%timeit
for i in range(N):
z=i**.5
10个循环,最佳3:每个循环156毫秒
%%timeit
for i in range(N):
z=math.sqrt(i)
10个循环,最好为3:每个循环91.1 ms
使用Python
3.6.9(笔记本)。