使用求幂** 0.5比math.sqrt效率低吗?

发布于 2021-01-29 16:07:43

引用“ Python编程:计算机科学概论

我们可以使用乘幂**求平方根。使用math.sqrt效率更高。

“多少”,但是到什么程度,如何?

关注者
0
被浏览
50
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    从理论上讲,hammar的答案duffymo的答案是很好的猜测。但在实践中,我的机器上,这是 不是 更有效:

    >>> import timeit
    >>> timeit.timeit(stmt='[n ** 0.5 for n in range(100)]', setup='import math', number=10000)
    0.15518403053283691
    >>> timeit.timeit(stmt='[math.sqrt(n) for n in range(100)]', setup='import math', number=10000)
    0.17707490921020508
    

    问题的一部分是.操作。如果sqrt直接导入到名称空间中,则可以得到一些改进。

    >>> timeit.timeit(stmt='[sqrt(n) for n in range(100)]', setup='from math import sqrt', number=10000)
    0.15312695503234863
    

    那里的关键字: 轻微

    进一步的测试表明,随着数量的增加,您从使用中获得的收益sqrt也会增加。但是仍然不是很多!

    >>> timeit.timeit(stmt='[n ** 0.5 for n in range(1000000)]', setup='import math', number=1)
    0.18888211250305176
    >>> timeit.timeit(stmt='[math.sqrt(n) for n in range(1000000)]', setup='import math', number=1)
    0.18425297737121582
    >>> timeit.timeit(stmt='[sqrt(n) for n in range(1000000)]', setup='from math import sqrt', number=1)
    0.1571958065032959
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看