Производительность и скорость разработки Python 3
Python и запуск програм байт-код, программный код на языке Python, Производительность python, скорость разработки
Читатели, имеющие опыт работы с компилирующими языками
программирования, такими как С и C++, могут заметить несколько отличий в модели
выполнения Python. Первое, что бросается в глаза, - это отсутствие этапа сборки,
или вызова утилиты «make»: программный код может запускаться сразу же,
как только будет написан. Второе отличие: байт-код не является двоичным
машинным кодом (например, инструкциями для микропроцессора Intel). Байт-
код - это внутреннее представление программ на языке Python.
По этой причине программный код на языке Python не может выполняться
так же быстро, как программный код на языке С или C++, о чем уже
говорилось в главе 1. Обход инструкций выполняет виртуальная машина, а не
микропроцессор, и чтобы выполнить байт-код, необходима дополнительная
интерпретация, инструкции которого требуют на выполнение больше времени,
чем машинные инструкции микропроцессора. С другой стороны, в отличие от
классических интерпретаторов, здесь присутствует дополнительный этап
компиляции - интерпретатору не требуется всякий раз снова и снова
анализировать инструкции исходного текста. В результате Python способен обеспечить
скорость выполнения где-то между традиционными компилирующими и
традиционными интерпретирующими языками программирования.
С другой стороны, в модели выполнения Python отсутствуют различия между
средой разработки и средой выполнения. То есть системы, которые
компилируют и выполняют исходный текст, - это суть одна и та же система. Для
читателей, имеющих опыт работы с традиционными компилирующими языками,
это обстоятельство может иметь некоторое значение, но в Python компилятор
всегда присутствует во время выполнения и является частью механизма,
выполняющего программы.
Это существенно увеличивает скорость разработки. Не нужно всякий раз
выполнять компиляцию и связывание программ прежде чем запустить их, - вы
просто вводите исходный текст и запускаете его. Это также придает языку
некоторый динамизм - вполне возможно, а нередко и удобно, когда программы
на языке Python создаются и выполняются другими программами Python во
время выполнения. Например, встроенные инструкции eval и exec принимают
и выполняют строки, содержащие программный код на языке Python.
Благодаря такой возможности Python может использоваться для настройки
продуктов - программный код Python может изменяться «на лету», а пользователи
могут изменять части системы, написанные на языке Python, без
необходимости перекомпилировать систему целиком.
Если смотреть с более фундаментальных позиций, то все, что имеется в Python,
работает на этапе времени выполнения - здесь полностью отсутствует этап
предварительной компиляции, все что необходимо, производится во время
выполнения программы. Сюда относятся даже такие операции, как создание
функций и классов и связывание модулей. Эти события в более статичных
языках происходят перед выполнением, но в программах на языке Python
происходят во время выполнения. В результате процесс программирования
приобретает больший динамизм, чем тот, к которому привыкли некоторые читатели.
«Learning Python, Fourth Edition, by
Mark Lutz. Copyright 2009 O'Reilly Media, Inc., 978-0-596-15806-4».