Python字节码(2.5版)优化了多少位置
有没有人能告诉我,Python的字节码中有多少地方进行了优化?最近我在尝试反编译Python的字节码,但发现Python 2.5版本中有很多优化。例如,对于这段代码:
a,b,c=([],[],[])#build list
在2.5版本之前,未优化的字节码是这样的:
BUILD_LIST_0
BUILD_LIST_0
BUILD_LIST_0
BUILD_LIST_4
UNPACK_LIST_
STORE_NAME 'a'
STORE_NAME 'b'
STORE_NAME 'c'
而在2.5版本中,优化后的字节码是这样的:
BUILD_LIST_0
BUILD_LIST_0
BUILD_LIST_0
ROT_THREE
ROT_TWO
STORE_FAST 'a'
STORE_FAST 'b'
STORE_FAST 'c'
这只是一个例子,但还有很多其他地方可能也进行了优化。那么,有人知道有没有文档能说明这些优化,或者告诉我怎么能找到所有这些优化的地方吗?
2 个回答
0
我觉得没有专门的文档,不过有Python解释器的C语言代码。你可以在这里找到几个不同版本的代码。
2
这个 Python/peephole.c 文件是进行各种优化的地方。上面给的链接是当前版本(2.6或更高版本),因为我现在无法访问动态源代码浏览器 这里。不过等它恢复正常后,你可以很容易找到特定版本的信息,比如2.5.2版本或者其他你需要的版本。