Python: while 1

Starting with Py2.3, the interpreter optimizes «while 1» to just a single jump. In contrast «while True» takes several more steps. While the latter is preferred for clarity, time-critical code should use the first form.

Вот как…

Поделиться
Отправить
2009   python   pythonspeed
4 комментария
Owner (companyowner.myopenid.com)

одного не ясно — почему в оптимизатор не зашить:
while 1 = while true = one step :)

это всё равно константы.

Евгений Степанищев (bolknote.ru)

Комментарий для companyowner.myopenid.com:

Не знаю :) Та же мысль родилась. Там вообще много странных вещей. Например, a = 1+2 в цикле будет вычисляться каждый раз.

MaGIc laNTern (magic-lantern.livejournal.com)

В Python 2.x True можно переназначать. В Python 3.x True сделали ключевым словом (то есть при попытке назначить что-то другое будет ошибка SyntaxError), и там действительно разницы уже нет (оба варианта выполняются без дополнительной операции чтения значения для True).

Подробнее:  http://stackoverflow.com/questions/3815359/while-1-vs-for-whiletrue-why-is-there-a-difference

Евгений Степанищев (bolknote.ru)

Комментарий для magic-lantern.livejournal.com:

Да, тогда я этого не знал, потом узнал: http://bolknote.ru/all/2144/

Но всё равно, спасибо!

Популярное