Thread Werte in Hash und gleichzeitig doppelte finden (14 answers)
Opened by rk-ger at 2007-01-01 23:46

bloonix
 2007-01-08 17:59
#72843 #72843
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=pq,01.01.2007, 23:05]my %seen;
my @unique = grep { ! $seen{$_}++ } @array;
[/quote]
Schönes Beispiel, aber je nach Größe des Arrays ziemlich unschön, da sich
das Ganze verdreifacht. Da würde ich lieber sowas wie

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use strict;
use warnings;
use Benchmark;

Benchmark::cmpthese(-1,{
'shift' => sub {
my (%seen, $string);
my @array = (0..1000, 0..1000);
$seen{$string}++ while $string = shift @array;
for (keys %seen) {
push @array, $_;
delete $seen{$_};
}
},
'grep' => sub {
my %seen;
my @array = (0..1000, 0..1000);
my @unique = grep { ! $seen{$_}++ } @array;
},
});


bevorzugen, was zudem auch noch um einiges schneller ist:

       Rate  grep shift
grep   431/s    --  -90%
shift 4483/s  941%    --
\n\n

<!--EDIT|opi|1168272145-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.

View full thread Werte in Hash und gleichzeitig doppelte finden