Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

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

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
Domain Nodelet?
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 imbibing at the Monastery: (3)
As of 2023-04-01 17:20 GMT
Find Nodes?
    Voting Booth?

    No recent polls found