Компиляция во время выполнения: как это возможно, что это не удар по производительности? - PullRequest
2 голосов
/ 27 июня 2010

Я слышал, что некоторые типы компиляции во время выполнения не снижают производительность. Официальная документация Python утверждает, что запуск файла .pyc не быстрее, чем .py. (Я не могу найти ссылку прямо сейчас.) Как это возможно? Разве не требуется время для генерации байт-кода из .py?

А как насчет языков, таких как PHP? Разве нет необходимости компилировать их при каждом выполнении? Зачем тебе это? Если один и тот же сценарий будет запускаться много раз, это кажется пустой тратой времени.

Ответы [ 2 ]

4 голосов
/ 27 июня 2010

Без контекста фактического документа, который вы читали, невозможно сказать наверняка, но я думаю, что вы, возможно, неправильно понимаете, что подразумевается под «производительностью».

Приложение запускается медленнее, если оно должнопри запуске компилируется в байт-код, но он не запускается медленнее.Без квалификации, кто-то говорит о «производительности», почти никогда не имеет в виду время запуска.

1 голос
/ 27 июня 2010

Python проверяет файл .pyc и, если он не существует или устарел, он воссоздает байт-код из файла .py.

Если файловая система недоступна для записи,этот шаг все еще происходит в оперативной памяти до запуска программы.

Таким образом, Python никогда не интерпретирует код построчно при запуске программы.

В результате, если файл .pyc существует итекущая, ваша программа начнет работать чуть раньше, но скорость выполнения будет такой же

...