Schwartzian transform

Damian Conway damian at
Wed Aug 13 12:45:59 BST 2014

Mark and Aaron are ntirely correct that the ST is not required for your example,
but if your actual application uses a significantly larger dataset than just
four hash entries, then the ST may still be array lookups
are around twice as fast as hash lookups. That might be a significant
performance enhancement if you have to do O(NlogN) key look-ups for
a sufficiently large value of N.

As always, only benchmarking on real(istic) data can determine whether
you will actually benefit from using the ST or not.

And, FWIW, I'd have written the shorter version as:

    my @sorted_records
        = sort { $a->{position} <=> $b->{position} }
               values %{$ref};

    my $next_position = 1;
    for my $next_record (@sorted_records) {
        $next_record->{position} = $next_position++;
    } maximize long-term maintainability.


More information about the mailing list