Today's Parrot speedups add up to almost 50%. That's right -- a little rethinking nearly doubled the benchmark speed.
Patrick said he'd work on this a little bit, but I ran a couple of quick tests. The NQP grammar included with Parrot 0.5.2 builds in 5.575 wallclock seconds with today's new Parrot. It built in 12.956 seconds with Parrot 0.5.2. Today's version of the grammar failed to build with Parrot 0.5.2 after 20.636 seconds. It builds with today's Parrot in 16.322 seconds.
Those numbers aren't scientific (despite all those decimal points of precision), but they're roughly correct. I trust Callgrind's accuracy more for comparison. Parrot 0.5.2 spent 21,285,518,488 cycles building its grammar. New Parrot spent 9,189,968,377 cycles building the grammar for 0.5.2.
The grammar as of r27568 is 2332 lines long; it was 806 lines long in Parrot 0.5.2. It costs 24,377,028,231 cycles to build in today's Parrot. Doubling the speed in six months is good. Doubling the speed while adding so many new features is even better. Also keep in mind that most of the optimizations were in the core of Parrot, not in NQP or PIR. We don't yet have a good way to profile PIR, so we've performed very few optimizations at that level. There are likely several decent improvements lying in wait.
If there's sufficient interest, I'll explain today's two optimizations in a future post.
Tell me more.