OUTER: foreach my $record (@in) {
foreach my $field (keys %{$where}) {
next OUTER unless $record->{$field} eq $where->{$field};
}
push @out, $record;
}
####
$ time perl -e ' my @out = ();
for my $record (0..10000000) {
my $keep = 1;
foreach my $field (qw /80000/) {
unless ($record == $field) {
$keep = 0;
last;
}
push @out, $record if $keep;
}
}
print "@out", "\n";'
80000
real 0m4.260s
user 0m4.227s
sys 0m0.015s
####
$ time perl -e ' my @out = ();
OUTER: for my $record (0..10000000) {
foreach my $field (80000) {
next OUTER unless ($record == $field);
}
push @out, $record ;
}
print "@out", "\n";'
80000
real 0m2.761s
user 0m2.745s
sys 0m0.000s
####
OUTER: for my $record (0..10000000) {
next OUTER unless ($record == 80000);
push @out, $record ;
}
print "@out", "\n";'
80000
real 0m0.854s
user 0m0.841s
sys 0m0.000s