It occurs to me that I neglected to talk about the design change.

In this case the issue is with Test-* objects. Back when performance was a
problem I tried out using array based objects instead of hash base ones. In
profiling the object system was one of the big time eaters. While I changed
the base to arrays I also changed how the accessors were built, and how
some other parts of the objects worked. In the end my profiling showed huge
improvements. Unfortunately I failed to measure the array base and other
optimizations independently. I also failed to record my data, making it
impossible for me to provide a sound argument for the array based design.

I got called out on this, and was urged to consider switching back to
hashes. I decided to go ahead and get some hard numbers with which to make
a decision. Ultimately it turns out that the gains of using arrays over
hashes are very minuscule. When I was doing my earlier profiling I failed
to notice that my other optimizations (use of constants, better/cheaper
accessors, etc) were where the real improvements were being seen.

Anyway, here are the hard numbers:

Based on these numbers there does not appear to be a compelling reason to
continue to use array based objects. However there are plenty of reasons to
prefer hash base objects. Hash based objects can be dumped, are easy to
read, and are what people expect. It also makes extending the objects

As you can see I have already done the work in branches to switch to
hashes, but this is just a direct switch. The direct switch fails to
update/alter api's to work better with hashes, as such he branches
currently wrap/hack the architecture change instead of embracing it. I
would like to take the time o actually reflect he new object base in the
api's to provide a better user and developer experience. I do not think it
would be wise to rush that work just o have it in 5.22, instead I will take
the time to do it correctly, and make sure it is up to snuff.

On Fri, Mar 6, 2015 at 11:51 AM, Chad Granum wrote:

A design decision is being changed in the new Test-Simple stuff. This
change comes at the request of many people in perl-qa, and I agree with the
change. However this does mean I will not have something I am ready to
release by the time we reach the march cutoff date for 5.22 changes.

To that end 5.22 should ship with the latest STABLE Test-Simple (
https://metacpan.org/release/EXODIST/Test-Simple-1.001014). We can put
the development versions back into blead AFTER 5.22 is released.

I have a branch that already has the design change, and nothing is broken,
but I still think it is wise to give it some brewing time before it ships.
I also wish to adapt a couple interfaces now that some details under the
hood have changed. I would prefer to make sure the actual final release is
correct, instead of rushing o make the 5.22 cutoff.


Search Discussions

Discussion Posts


Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 3 of 4 | next ›
Discussion Overview
groupperl5-porters @
postedMar 6, '15 at 7:51p
activeMar 7, '15 at 8:42p



site design / logo © 2021 Grokbase