Найти - Пользователи
Полная версия: Разные логические операторы одинаковы по скорости?
Начало » Python для экспертов » Разные логические операторы одинаковы по скорости?
1 2
newpy
что предпочтительнее для питона
так:
if a<b and x<y or x>y : ...
или так:
if a<b if x<y else x>y :  ...
чтобы прога шустрее работала, меньше телодвижений соверашала меньше места в памяти требовала и так далее.. вопрос не о читаемости программы человеком
а о компьютере (нагрузке на процессор и так далее)

кстати, надеюсь, что в питоне a<b and x<y or x>y равносильно (a<b and x<y) or x>y

////////////////////////////////////////////////
такой же вопрос по работе над строками:
если необходимо несколько раз обратиться к какой то части строки
лучше многократно использовать splitы (или другие методы строк),
или лучше сохранить эту часть в новую переменную
и потом уже обращаться к этой переменной?
то есть требуют ли больше ресурсов substringи (или другие методы строк), чем обращения к меременным, что лучше сработать с ними один раз и пусть при этом плодятся дополнительные переменные в памяти


________________________________
питон3.4(базовая версия) на win7-32
FishHook
Вопросы экспертам задают эксперты об экспертских нуждах и понимают эти вопросы и нужды только эксперты, нубло идет в соответствущий раздел форума и там задает вопросы в надежде, что его услышат.
Если у тебя проблема - это у тебя проблема, не нужно писать о ней сразу президенту, папе римскому и деду морозу.
ilnur
newpy
а вы возьмите профилировщик и протестируйте. посмотрите как юзается память, сколько времени тратится на все это.
и нам тоже потом не забудьте рассказать
doza_and
newpy
чтобы прога шустрее работала,
один из действенных способов написать программу на языке C.
Еще не вредно прочитать:
http://www.programmer-lib.ru/cstandart_page.php?id=5
А после этого задать себе вопрос, ответить на него, а потом изложить нам, как может пара операторов сравнения может быть существенна для быстродействия.
py.user.next
newpy
if a<b and x<y or x>y : ...
или так:
if a<b if x<y else x>y :  ...

Это разные вещи (логическая ошибка).

>>> if 0 and 2 or 3: print('x')
... 
x
>>> if 0 if 2 else 3: print('x')
... 
>>>
Budulianin
py.user.next
а во-вторых, второй вариант не работает (синтаксическая ошибка).

>>> if 3<4 if 2<5 else 3>2 : print(1)
... 
1

:D поторопился.
py.user.next
Budulianin
:D поторопился.

Да я забыл проверить просто. :)
Budulianin
py.user.next
Да я забыл проверить просто. :)
А вообще, странная запись.
py.user.next
Budulianin
А вообще, странная запись.

>>> if 1 elif 2 else 3: print('x')
  File "<stdin>", line 1
    if 1 elif 2 else 3: print('x')
            ^
SyntaxError: invalid syntax
>>>

Хотя, казалось бы, должна работать.
Budulianin
py.user.next
Хотя, казалось бы, должна работать.

Нет, в однострочных условиях нету elif.

    3 if 2<3 elif 4
                ^
SyntaxError: invalid syntax

>>> 1 if 4<8 else 5
1

он реализуется так:

>>> b = 4
>>> a = 1 if b==1 else \
...     2 if b==2 else \
...     3
>>> a
3

Тернарная условная операция.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB