Day 83: Mature optimisation.

autrijus on 2005-04-24T19:11:30

I rested for most of today, recovering from the drawn-out-until-7am release process last night. Still, I managed to check in an optimization I planned for quite a while now, namely changing the data structure for symbol table from a List into a Map. It speeded up Pugs tremendously -- anywhere from 2x to 5x! I like obra's description of this as a mature optimization. This large refactoring has deepened my understanding on abstracted data types, and Pugs will no doubt continue move toward them.

We have had make optimized for a while now, and coupled with this new change, the interpreter mode is finally approaching real-world useful performance. The make smoke target (which generates a beautiful smoke.html matrix) builds optimized by default, and I'm thinking about making it the default for make for the next release.

Corion checked in the first new failing test after 6.2.1, namely that map { $_ => uc($_) } @x auto-collapses the block into a hash, which is actually mandated by the current Synopses. I have tentatively fixed that bug by taking the omission of trailing comma a hint to not collapse the block, and submitted a proposal on p6l about it.

With Lemmih's help on #haskell, Corion implemented -s and -z file tests for Win32. Corion also added, refactored and cleaned up lots of tests, and is making another round of test cleanups as I'm writing this...

bsb played some more with junctions, noticing that the chained ^ operator has signature of Any; it should be Any|Junction like other junctive constructors. It's now fixed.

iblech repaired the Turing Machine (qotw-regular-24.p6), and fixed some more typos in the ChangeLog.

gaal added timing data to our YAML-powered make smoke harness run.

That's it for today. See you tomorrow!