Уведомления

Группа в Telegram: @pythonsu

#1 Май 10, 2012 09:31:25

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

Повторные числа

Chern
Покажу фокус:
>>> from timeit import Timer
>>> d=dict(enumerate(range(1000000)))
>>> func1="""def foo():
...         for i in xrange(0,10000000):
...             if i in d: d[i]
...             else: pass
...       """
>>> 
>>> func2="""def foo():
...         for i in xrange(0,10000000):
...             try: d[i]
...             except KeyError: pass
...       """
>>> t = Timer(stmt=func1)
>>> t2 = Timer(stmt=func2)
>>> print "if %s usec/pass" % t.timeit(number=1000000)
if 0.0738561153412 usec/pass
>>> print "try %s usec/pass" % t2.timeit(number=1000000)
try 0.0838830471039 usec/pass
У меня результаты другие!
if 0.069727897644 usec/pass
try 0.0694489479065 usec/pass




Офлайн

#2 Май 10, 2012 09:58:56

Chern
От: Киев
Зарегистрирован: 2010-09-15
Сообщения: 71
Репутация: +  3  -
Профиль   Отправить e-mail  

Повторные числа

FishHook
У меня результаты другие!

Хм. Запустил десяток раз - результаты меняются то в одну, то в другую сторону



Офлайн

#3 Май 10, 2012 15:34:59

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Повторные числа

Я при оптимизации меняю по возможности try-except на if in, потому что раньше как-то при тестах так оказалось быстрее :) Видимо, все не так просто.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version