A short session with Devel::Profile led me from this:
time elapsed (wall): 17.6237
time running program: 13.2164 (74.99%)
time profiling (est.): 4.4072 (25.01%)
number of calls: 526792
time elapsed (wall): 11.4355
time running program: 8.7706 (76.70%)
time profiling (est.): 2.6649 (23.30%)
number of calls: 301198
Regrettably, to get that sort of performance enhancement, I had to engage in some serious encapsulation violations. This will make some further refactorings more difficult. I wonder if I made a mistake?
I've also noticed that some people's tests are failing. I can't replicate it on my machine, but it looks suspiciously like Scalar::Util::looks_like_number fails on 5.8.4 if the number is undefined. This doesn't seem right, though, as this is such a common function. Of course, I see that both of those failures are on boxes my boss owns. Perhaps a plot? On the other hand, all but one of the test reports are from boxes he owns. How depressing. I guess people aren't downloading it after all.