#!/usr/bin/perl use strict; use warnings; use Encode qw(decode); use Unicode::Collate; use String::Random; my $zeilen = 10000; my $spalten = 5; my $methode = 2; ####################################### my %data; for (my $z = 0; $z < $zeilen; $z ++) { my @felder; for (my $s = 0; $s < $spalten; $s ++) { my $d = String::Random::random_string( '10101022',[ split //, uc 'aei' ],[ split //, uc 'bdfghklmnprstwxz' ],[ split //, '23456789' ]); push @felder,$d; # print " $d"; } push @{$data{spalten}},[@felder]; # print "\n"; } print "Daten fertig erzeugt\n"; ####################################### print "\n\nSortiert:\n"; if ($methode == 1) { my $start = time(); my $uniccol = Unicode::Collate->new(); foreach my $harefz ( sort { my $return = 0; my $z = -1; while (!$return && $z < scalar @{$data{spalten}} - 1) { $z ++; $return = $uniccol->cmp($a->[$z],$b->[$z]); } $return; } @{$data{spalten}} ) { for (my $s = 0; $s < scalar @{$harefz}; $s ++) { # print ' '.$harefz->[$s]; } # print "\n"; } print "\nLaufzeit: ".(time()-$start); } else { my $start = time(); foreach my $harefz ( sort { my $return = 0; my $z = -1; while (!$return && $z < scalar @{$data{spalten}} - 1) { $z ++; $return = lc $a->[$z] cmp lc $b->[$z]; } $return; } @{$data{spalten}} ) { for (my $s = 0; $s < scalar @{$harefz}; $s ++) { # print ' '.$harefz->[$s]; } # print "\n"; } print "\nLaufzeit: ".(time()-$start); }