Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 15, 2014 14:29:48

newpy
Зарегистрирован: 2014-08-12
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Разные логические операторы одинаковы по скорости?

что предпочтительнее для питона
так:

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



__________________
py3.7.8-64 win10-64

Офлайн

#2 Авг. 15, 2014 14:43:12

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Разные логические операторы одинаковы по скорости?

Вопросы экспертам задают эксперты об экспертских нуждах и понимают эти вопросы и нужды только эксперты, нубло идет в соответствущий раздел форума и там задает вопросы в надежде, что его услышат.
Если у тебя проблема - это у тебя проблема, не нужно писать о ней сразу президенту, папе римскому и деду морозу.



Офлайн

#3 Авг. 15, 2014 15:59:07

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

Разные логические операторы одинаковы по скорости?

newpy
а вы возьмите профилировщик и протестируйте. посмотрите как юзается память, сколько времени тратится на все это.
и нам тоже потом не забудьте рассказать

Офлайн

#4 Авг. 15, 2014 16:16:55

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Разные логические операторы одинаковы по скорости?

newpy
чтобы прога шустрее работала,
один из действенных способов написать программу на языке C.
Еще не вредно прочитать:
http://www.programmer-lib.ru/cstandart_page.php?id=5
А после этого задать себе вопрос, ответить на него, а потом изложить нам, как может пара операторов сравнения может быть существенна для быстродействия.



Офлайн

#5 Авг. 15, 2014 23:49:04

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Разные логические операторы одинаковы по скорости?

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')
... 
>>>



Отредактировано py.user.next (Авг. 15, 2014 23:56:18)

Офлайн

#6 Авг. 15, 2014 23:52:10

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Разные логические операторы одинаковы по скорости?

py.user.next
а во-вторых, второй вариант не работает (синтаксическая ошибка).

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

:D поторопился.



Отредактировано Budulianin (Авг. 15, 2014 23:52:54)

Офлайн

#7 Авг. 15, 2014 23:53:53

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Разные логические операторы одинаковы по скорости?

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

Да я забыл проверить просто. :)



Офлайн

#8 Авг. 15, 2014 23:54:32

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Разные логические операторы одинаковы по скорости?

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



Офлайн

#9 Авг. 15, 2014 23:59:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Разные логические операторы одинаковы по скорости?

Budulianin
А вообще, странная запись.

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

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



Офлайн

#10 Авг. 16, 2014 00:02:09

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Разные логические операторы одинаковы по скорости?

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

Тернарная условная операция.



Отредактировано Budulianin (Авг. 16, 2014 00:09:38)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version