[Python-Dev] Performance of pre-creating exceptions?

Adam Olsen rhamph at gmail.com
Sat Mar 3 04:19:09 CET 2007


$ python2.5 -m timeit -r 10 -n 1000000 -s 'class Foo(Exception): pass'
'try: raise Foo()' 'except: pass'
1000000 loops, best of 10: 2.49 usec per loop
$ python2.5 -m timeit -r 10 -n 1000000 -s 'class Foo(Exception):' -s '
 def __init__(self): pass' 'try: raise Foo()' 'except: pass'
1000000 loops, best of 10: 3.15 usec per loop
$ python2.5 -m timeit -r 10 -n 1000000 -s 'e = Exception()' 'try:
raise e' 'except: pass'
1000000 loops, best of 10: 2.03 usec per loop

We can get more than half of the benefit simply by using a default
__init__ rather than a python one.  If you need custom attributes but
they're predefined you could subclass the exception and have them as
class attributes.  Given that, is there really a need to pre-create
exceptions?

-- 
Adam Olsen, aka Rhamphoryncus


More information about the Python-Dev mailing list