您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

从理论上讲,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
其他 2022/1/1 18:31:14 有427人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶