Каковы последствия под управлением Python с оптимизировать флагом?

Следующий пример работает как на ssl, так и на не-ssl и работает намного быстрее, поскольку вы используете только одно правило для управления http и https

RewriteEngine on


RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s on(s)|offs()
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]

[Tested]

перенаправляет

http

-

https

-

32
задан kkubasik 13 May 2010 в 21:14
поделиться

4 ответа

утверждения assert полностью исключены, как и блоки утверждений вида if __debug__: ... (так что вы можете поместить свой отладочный код в такие блоки утверждений и просто выполнить -O, чтобы избежать этого отладочного кода).

С -OO, кроме того, устраняются и докстринги.

28
ответ дан 27 November 2019 в 20:28
поделиться

Из документов :

Когда вызывается интерпретатор Python с флагом -O, оптимизированный код генерируется и сохраняется в файлах .pyo. В настоящее время оптимизатор мало помогает; он только удаляет утверждения assert. Когда используется -O, весь байт-код оптимизируется; Файлы .pyc игнорируются, а файлы .py компилируются в оптимизированный байт-код.

Передача двух флагов -O интерпретатору Python (-OO) заставит компилятор байт-кода выполнить оптимизацию, которая в некоторых редких случаях может привести к сбоям в работе программ. В настоящее время из байт-кода удаляются только __doc__ строки, что приводит к более компактным файлам .pyo. Поскольку некоторые программы могут полагаться на то, что они доступны, вам следует использовать эту опцию, только если вы знаете, что делаете.

Программа не запускается быстрее при чтении из файла .pyc или .pyo, чем при чтении из файла .py; единственное, что быстрее в файлах .pyc или .pyo - это скорость, с которой они загружаются.

То есть, другими словами, почти ничего.

24
ответ дан Bastien Léonard 27 November 2019 в 20:28
поделиться

Из Что делает флаг -O?

Это в некоторой степени зависит от версии Python . Чтобы точно узнать, что он , найдите в исходном коде Py_OptimizeFlag. В 2.5 он

  • заставляет интерпретатор загружать файлы .pyo, а не файлы .pyc (в файлах .zip просто делает .pyo предпочтительнее .pyc)
  • вызывает __ debug __ имеет значение 0
  • игнорирует операторы assert в исходном коде
  • обрабатывает __ debug __ статически как 0
  • заставляет генератор байтового кода сохранять файлы .pyo, а не .pyc
]
8
ответ дан 27 November 2019 в 20:28
поделиться

Как указано в режиме оптимизации python :

python -O в настоящее время выполняет следующие действия:

  • полностью игнорирует утверждения
  • устанавливает специальный встроенный name __ debug __ в False (по умолчанию True)

и при вызове как python -OO

  • удаляет строки документации из кода

Я не знаю, почему все забывают упомянуть __ проблема отладки __ ; возможно, это потому, что я единственный, кто его использует :) Конструкция if __debug __ вообще не создает байт-код при работе под -O , и я считаю это очень полезным.

5
ответ дан 27 November 2019 в 20:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: