сколько мест оптимизировано в байт-коде Python (версия 2.5) - PullRequest
1 голос
/ 18 июня 2009

Может кто-нибудь сказать мне, сколько мест оптимизировано в байт-коде 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 ]

2 голосов
/ 18 июня 2009

Исходный файл Python / peephole.c , где в основном все такие оптимизации выполняются - я дал ссылку на текущую версию (2.6 или лучше), потому что у меня проблемы с получением динамический исходный браузер здесь , но как только он снова заработает, легко увидеть конкретные версии, например ту, которая существовала (скажем) для 2.5.2 или любую другую конкретную версию, для которой вам нужна эта информация. *

0 голосов
/ 18 июня 2009

Я не думаю, что есть какая-либо документация как таковая, но есть код C для интерпретатора Python. Вы можете найти несколько различных версий этого здесь .

...