Форум сайта python.su
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
Офлайн
FishHook
У меня результаты другие!
Офлайн
Я при оптимизации меняю по возможности try-except на if in, потому что раньше как-то при тестах так оказалось быстрее :) Видимо, все не так просто.
Офлайн