Richard Jones' Log: Need For Speed, days 3 and 4
No posting yesterday, sorry. Things were just going so well with the work I was doing :)
On Wednesday I decided I'd had enough of frames and applying other people's patches so I started working on fixing the 50% slow-down in exceptions we are seeing in Python 2.5 versus 2.4. Along with Sean and Kristján we deduced that the current implementation is slow because it tries to fake being Python classes. This is not going to be that much faster than implementing in Python itself. I decided to reimplement it using new-style C types. That effort started mid Wednesday and by the end of the day (6pm or so) I'd completed about half of the new module.
CCP treated us to a Viking feast on Wednesday night which was a helluva lot of fun. There's more photos of the merriment in flickr under pyneedforspeed. We got back to the hotel around midnight. The next morning we headed off to Blue Lagoon for a bit of mid-sprint relaxation (and to recover from the feast). We all left the lagoon much more relaxed and ready for more sprinting. Some of us were so rejuvenated that we fell asleep on the bus back (see Sean's photos).
I plowed straight back into the exceptions code and by about mid-afternoon I'd finished the new module and ran the first compile. About an hour later the various type warnings and macro errors were fixed and the module compiled cleanly. Clearly, thanks to static typing, my work was done and I could now move on to some other task. Ha ha. Running the test suite turned up some bugs - some of which were crashes, some ref counting errors. By midnight (just as the sun was setting) I finally got the entire Python test suite to run through without a Python crashing out. Today I'll be working on getting the test suite to run without errors.
According to pybench, I've now sped up exceptions by 30% over 2.4.