在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(笔记本)。