http://www.perlmonks.org?node_id=657175


in reply to Natural sorting

Did you concider using one of salva's Sort::Key::* modules, maybe Sort::Key::Natural? I'd expect that to show superior performance.

Replies are listed 'Best First'.
Re^2: Natural sorting
by thundergnat (Deacon) on Dec 15, 2007 at 16:45 UTC

    Good point. Being an XS module I would expect it to have good performance, though for some reason it won't build on my system so I haven't been able to test it.

      I would appreciate if you could send my a bug report stating the cause of the build error (the output from make will do), your perl version, OS and processor (or perl -V output).

      oh, and BTW...

      use Sort::Key qw(keysort); sub mkkey { my $key = deaccent $_; $key =~ s/(?<=\d)\Q$separator\E(?>=\d)//g; $key =~ s{0*(\d+)}{ my $len = length $1; "\x00" . ('9' x ($len / 9)) . ($len % 9) . $1 }eg; $key; } ... cmpthese( -30, { #'alphanum' => sub { @temp = sort { alphanum( $a, $b ) +} @array; }, #'Sort::Naturally' => sub { @temp = nsort(@array) }, 'natural_sort' => sub { @temp = natural_sort(@array) }, 'Sort::Key' => sub { @temp = keysort \&mkkey, @array }, } );
      says...
      78848 items in array... s/iter natural_sort Sort::Key natural_sort 3.51 -- -31% Sort::Key 2.41 46% --