Thread Sort Array of Hashes by Key (7 answers)
Opened by devrand at 2012-09-18 21:12

Linuxer
 2012-09-19 00:29
#161921 #161921
User since
2006-01-27
3882 Artikel
HausmeisterIn

user image
Stimmt, manchmal sieht man die einfachen Lösungen nicht...

PS: Wenn ich meinen schnell zusammengehackten Benchmark anschaue, dann ist es gar keine Frage, ob Dein direkter sort das schnell genug erledigt...

Code: (dl )
1
2
3
4
5
perl /tmp/x.pl 
Testing with 704 values.
Rate ST direct
ST 568/s -- -100%
direct 4273666/s 752122% --


/tmp/x.pl (7.0kb):
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#! /usr/bin/perl
use strict;
use warnings;
use Benchmark qw( cmpthese );
use List::Util qw( shuffle );

my @unsorted = 
  shuffle
    map { { $_ => [] }  }
    'aaa' .. 'bbb';

warn "Testing with ", scalar(@unsorted), " values.\n";


cmpthese( -1, {

    direct => \&direct_sort,
    ST     => \&schwartzian,
    
});


sub direct_sort {
    
    return sort {
        (keys %$a)[0] cmp (keys %$b)[0]
    } @unsorted;
}

sub schwartzian {
    return map { $_->[0] }
      sort { $a->[1] cmp $b->[1] }
        map { [ $_, keys %$_ ] }
          @unsorted;    
}

Last edited: 2012-09-19 00:35:44 +0200 (CEST)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Sort Array of Hashes by Key