Python优化程度(Common subexpression elimination)

时间:2013-08-02 13:16:21

标签: python optimization python-2.7

假设我必须将一行划分为一个键和一个值,并将其放在名为dict的{​​{1}}中。让分隔符为props。我可以这样做:

=

或者这个:

props[line.partition('=')[0]] = line.partition('=')[2]

第一个表单会将字符串分区两次还是会优化它只执行一次?我想这是依赖于实现的,但常见的实现是否这样做(CPython Jython,IronPython)?我知道这是不成熟的优化。我是python的新手,我只是很好奇。

2 个答案:

答案 0 :(得分:3)

在第一种情况下,字符串被拆分两次。

作为一种动态语言,Python无法确定line值是不可变的,.partition()方法每次都会返回相同的结果。它别无选择,只能每次执行line.partition('=')

答案 1 :(得分:0)

Python字节码编译器/解释器非常简单(我敢说,原始)并且除了一些非常基本的常量折叠和抛出断言(如果被要求)之外不执行任何优化。当然没有通用的子表达消除通过。