tim*_*kro 4 python python-internals
我想知道python是否在其.pyc文件中缓存/编译简单的算术5*5+5.
有时我喜欢写if seconds > 24*60*60一天比如说.我知道对性能的影响是不明显的,但我很好奇.
是的,CPython(Python的默认实现)使用窥孔优化器将这些表达式合并为一个数字; 这称为恒定折叠.
您可以使用dis反汇编程序检查:
>>> import dis
>>> def foo():
... if seconds > 24*60*60:
... pass
...
>>> dis.dis(foo)
2 0 LOAD_GLOBAL 0 (seconds)
3 LOAD_CONST 4 (86400)
6 COMPARE_OP 4 (>)
9 POP_JUMP_IF_FALSE 15
3 12 JUMP_FORWARD 0 (to 15)
>> 15 LOAD_CONST 0 (None)
18 RETURN_VALUE
Run Code Online (Sandbox Code Playgroud)
注意LOAD_CONST偏移3处的指令; 它加载24*60*60表达式的最终结果,表达式本身就从字节码中消失了.
请参阅文件中的fold_binops_on_constants功能peephole.c.
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |