在Python的字节码中优化了多少个地方(版本2.5)

时间:2009-06-18 05:33:30

标签: python bytecode

谁能告诉我在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'

这只是一个例子,但还有许多其他地方可能会被优化。那么,anybode知道是否有一些文件来澄清这些优化或者告诉我以哪种方式找到所有这些?

2 个答案:

答案 0 :(得分:2)

Python/peephole.c源文件基本上执行了所有这些优化 - 我给出的链接是当前版本(2.6或更高版本),因为我无法访问动态源浏览器{{ 3}},但是一旦它再次起作用,很容易看到特定的版本,例如现存的(例如)2.5.2或者你需要这些信息的任何其他特定版本。

答案 1 :(得分:0)

我认为本身没有任何文档,但是有Python解释器的C代码。您可以找到它的几个不同版本here