[Python-Dev] 2.5a2 try/except slow-down: Convert to type?
Sean Reifschneider
jafo-python-dev at tummy.com
Wed May 24 12:24:41 CEST 2006
We're working at the sprint on tracking this down. I want to provide some
history first and then what we're looking for feedback on.
Steve Holden found this on Sunday, the pybench try/except test shows a ~60%
slowdown from 2.4.3 to 2.5a2. The original test is, roughly:
for i in range(N):
try: raise ValueError, 'something'
except: pass
But changing it to the following shows 0% slowdown from 2.4.3 to 2.5a2:
e = ValueError('something')
for i in range(N):
try: raise e
except: pass
The change is that from 2.4.3 to 2.5a2 includes Brett Cannon's patch to make
exceptions all new-style objects.
Brett provided the following direction:
>Right, I meant change how it (BaseException) is written. Right now
>it uses PyMethodDef for magic methods and just uses PyType_New()
>as a constructor. I was wondering if, for some reason, it would be
>faster if you used a PyType_Type definition for BaseException and
>used the proper C struct to associate the methods with the class.
Richard Jones has done some investigation, and we're looking at fixing
it from the current implementation. This is basically a direct
implementation of the old-style exception, but inheriting from object.
Converting it to a type in C should reduce the cost dramatically.
We're looking for feedback on where this may cause problems or break
things. Thoughts?
Thanks,
Sean
--
Thieves broke into Scotland Yard yesterday and stole all the toilets.
Detectives say they have nothing to go on.
Sean Reifschneider, Member of Technical Staff <jafo at tummy.com>
tummy.com, ltd. - Linux Consulting since 1995: Ask me about High Availability
More information about the Python-Dev
mailing list