相关疑难解决方法(0)

为什么早退比其他人慢?

这是我几天前给出的回答的后续问题.编辑:似乎该问题的OP已经使用了我发给他的代码来问同样的问题,但我没有意识到它.道歉.提供的答案虽然不同!

我基本上观察到:

>>> def without_else(param=False):
...     if param:
...         return 1
...     return 0
>>> def with_else(param=False):
...     if param:
...         return 1
...     else:
...         return 0
>>> from timeit import Timer as T
>>> T(lambda : without_else()).repeat()
[0.3011460304260254, 0.2866089344024658, 0.2871549129486084]
>>> T(lambda : with_else()).repeat()
[0.27536892890930176, 0.2693932056427002, 0.27011704444885254]
>>> T(lambda : without_else(True)).repeat()
[0.3383951187133789, 0.32756996154785156, 0.3279120922088623]
>>> T(lambda : with_else(True)).repeat()
[0.3305950164794922, 0.32186388969421387, 0.3209099769592285]
Run Code Online (Sandbox Code Playgroud)

......或换句话说:else无论if条件是否被触发,使条款更快.

我假设它与两者生成的不同字节码有关,但有人能够详细确认/解释吗?

编辑:似乎不是每个人都能重现我的时间,所以我认为在我的系统上提供一些信息可能是有用的.我正在安装默认的python运行Ubuntu 11.10 64位.python …

python optimization python-2.7

174
推荐指数
1
解决办法
1万
查看次数

标签 统计

optimization ×1

python ×1

python-2.7 ×1