Будет ли чрезмерное комментирование кода замедлять выполнение?

Возможный дубликат:
Замедляют ли комментарии интерпретируемый язык?

Будет ли заметное снижение производительности при выполнении большого файла .py, если правильно прокомментировано более 75% строк кода?


person thegrandchavez    schedule 07.05.2012    source источник
comment
Нет, но если у вас есть комментарии к 75% вашего кода, вам может быть полезно не комментировать так много, а вместо этого писать читаемый код.   -  person    schedule 07.05.2012


Ответы (1)


No

Когда вы запускаете python, первым шагом является преобразование в байт-код, которым являются эти .pyc файлы. Комментарии из них удаляются, так что это не имеет значения*.

Если вы запустите с параметром -O или -OO, python создаст «оптимизированные» файлы pyo, которые незначительно быстрее, если вообще быстрее. Основное отличие в том, что:

  • с -O утверждением удаляются,
  • с опцией -OO строки __doc__ удаляются. Учитывая, что они иногда нужны, работать с -OO не рекомендуется.

* ниже указано, что .pyc файлы сохраняются только для модулей. Таким образом, исполняемый файл верхнего уровня необходимо перекомпилировать при каждом запуске. Этот шаг может замедлить работу массивного исполняемого файла Python. На практике большая часть кода должна находиться в модулях, поэтому это не проблема.

person Shep    schedule 07.05.2012
comment
...так что это может повлиять на ваше время запуска, но не на ваше долгосрочное время выполнения. В частности, если все предварительно скомпилировано в .pyc файлов, это будет единоразовая стоимость, а не стоимость выполнения. - person larsks; 07.05.2012
comment
Я сомневаюсь, что это заметно повлияет на время запуска, поскольку Python просто игнорирует все, что находится между символом # и новой строкой. Кроме того, файлы .pyc сохраняются между запусками, если файл .py не изменяется, поэтому любой эффект возникает только при первом запуске программы. - person Andrew Gorcester; 07.05.2012
comment
-1, так как в .pyc компилируются только импортированные модули; исполняемые скрипты - нет. - person Wooble; 07.05.2012
comment
@Wooble, хорошая мысль, но я никогда не замечал эффекта. Единственные сценарии, которые я могу придумать, где это может иметь значение, - это когда вы запускаете очень полосу или когда вы делаете повторные вызовы исполняемого файла python извне python. На практике ни разу не сталкивался. - person Shep; 07.05.2012
comment
@Wooble, если вы следуете передовым методам, ваши сценарии представляют собой лишь тонкие оболочки модулей; setuptools и kin даже автоматически сгенерируют эти оболочки для вас. - person Charles Duffy; 07.05.2012
comment
@CharlesDuffy: может быть и так, но OP говорит о выполнении большого файла .py. Конечно, комментарии повлияют только на время запуска, но это будет происходить каждый раз при запуске большого скрипта, потому что файл .pyc не будет создан. Часть «Нет» верна, но объяснение вводит в заблуждение. - person Wooble; 07.05.2012
comment
Даже если у вас есть большой монолитный .py файл, вызываемый непосредственно из командной строки, написать для него оболочку, которая просто импортирует большой скрипт, не составит труда. Затем большой скрипт компилируется в .pyc, и при каждом запуске анализируется только однострочная оболочка. - person kindall; 07.05.2012
comment
Еще придирки: -O удаляет утверждения и устанавливает __debug__ = False, но не удаляет строки документации, это делает только -OO. Таким образом, запуск с -O вреден только при отладке (или неправильном использовании утверждений, что делают некоторые кодовые базы). - person ; 07.05.2012
comment
@delnan спасибо, что указали на это. Я добавил к своему ответу. - person Shep; 07.05.2012