1

谁能告诉我在 Python 的字节码中有多少地方进行了优化?这几天一直在尝试反编译Python的字节码,但是发现在Python的2.5版本中有很多优化。例如:to this code

a,b,c=([],[],[])#build list

version2.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'

这只是一个例子,但还有很多其他地方可以优化。那么,有没有人知道是否有一些文档来阐明这些优化或告诉我可以通过哪种方式找到所有这些优化?

4

2 回答 2

2

Python/peephole.c源文件基本上是执行所有此类优化的地方——我提供的链接是当前版本(2.6 或更高版本),因为我无法在此处访问动态源浏览器,但一旦它再次工作很容易看到特定版本,例如(比如说)2.5.2 或任何其他您需要此信息的特定版本。

于 2009-06-18T05:46:05.460 回答
0

我不认为有任何文档本身,但有 Python 解释器的 C 代码。你可以在这里找到它的几个不同版本。

于 2009-06-18T05:41:59.710 回答