同时优化我的代码实现了以下内容:Python:为什么*和**比/和sqrt()更快?
>>> from timeit import Timer as T
>>> T(lambda : 1234567890/4.0).repeat()
[0.22256922721862793, 0.20560789108276367, 0.20530295372009277]
>>> from __future__ import division
>>> T(lambda : 1234567890/4).repeat()
[0.14969301223754883, 0.14155197143554688, 0.14141488075256348]
>>> T(lambda : 1234567890 * 0.25).repeat()
[0.13619112968444824, 0.1281130313873291, 0.12830305099487305]
也:
>>> from math import sqrt
>>> T(lambda : sqrt(1234567890)).repeat()
[0.2597470283508301, 0.2498021125793457, 0.24994492530822754]
>>> T(lambda : 1234567890 ** 0.5).repeat()
[0.15409398078918457, 0.14059877395629883, 0.14049601554870605]
我认为它与Python是用C语言实现的方式做,但我不知道是否有人会关心解释为什么如此?
你接受你的问题的答案(我假设你回答你真正的问题)与你的问题题目没有多大关系。你可以编辑它与持续折叠有关吗? –
@ZanLynx - 嗨。你介意澄清一下吗?我发现问题标题恰恰表达了我想知道的内容(为什么X比Y更快),并且我选择的答案正是这样的......看起来与我完美匹配......但也许我忽略了某些东西? – mac
乘法和幂函数总是比division和sqrt()函数更快,因为它们的性质。除法和根操作通常必须使用一系列更精细更精确的近似值,并且不能像乘法那样直接转到正确的答案。 –