Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re: Noodling with natural sorting in perl6

by eric256 (Parson)
on Aug 20, 2010 at 16:57 UTC ( #856324=note: print w/ replies, xml ) Need Help??

in reply to Noodling with natural sorting in perl6

I played around and it seems that creating the copies is where a lot of time is lost in the second version causeing it to be slow. So i moved the processing out of the map and into a function, the cached results out of it, and used that for the sort. Makes it appear about the same speed as the first sort, not positive the best way to benchmark in perl6 yet though.

my %cache; sub pre_process($word) { unless %cache.exists($word) { %cache{$word} = $word.subst(/(\d+)/, -> $/{ sprintf( "%s%c%s", +0 , $0.chars, $0)}, :g).lc; } return %cache{$word}; } sub natural_cmp ($a, $b) { return (pre_process($a) cmp pre_process($b)); }

Eric Hodges

Comment on Re: Noodling with natural sorting in perl6
Download Code
Replies are listed 'Best First'.
Re^2: Noodling with natural sorting in perl6
by thundergnat (Deacon) on Aug 20, 2010 at 18:12 UTC

    A very nice modification, one that should have been obvious to me in retrospect. You're basically implementing an orcish maneuver

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://856324]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (5)
As of 2016-02-13 16:36 GMT
Find Nodes?
    Voting Booth?

    How many photographs, souvenirs, artworks, trophies or other decorative objects are displayed in your home?

    Results (438 votes), past polls