Leser: 1
10 Einträge, 1 Seite |
1
2
3
4
5
6
7
8
9
10
11
use strict;
use warnings;
my @such = qw/foo bar/; # zwei suchbegriffe
open FILE, "</meine/datei.txt" or die $!;
while ( my $zeile = <FILE> ) {
if ( $zeile =~ /${such[0]}/ and $zeile =~ /${such[1]}/ ) {
print $zeile;
}
}
close FILE;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl
use warnings;
use strict;
my @searched = qw( die ist );
line:
while ( my $l = <DATA> ) {
for( @searched )
{ next line unless index($l, $_) + 1 }
print $l;
}
# Das hier gehört nach _ _ DATA _ _, das Forum killt das aber.
Das ist die erste Zeile.
Dies ist die zweite Zeile.
Hier kommt Nummer drei.
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
36
37
38
39
40
41
42
#!/usr/bin/perl
use warnings;
use strict;
use Benchmark qw(:all);
my @searched = qw( Eins Dies );
my @lines = <DATA>;
cmpthese( 1_000_000, {
'index' => sub { by_index( \@searched, \@lines ) },
'w_reg' => sub { by_walked_regex( \@searched, \@lines ) },
});
sub by_index {
my @such = @{ $_[0] };
my @lin = @{ $_[1] };
line:
while ( my $l = shift @lin ) {
for( @such )
{ next line unless index( $l, $_ ) + 1 }
print STDERR "i $l";
}
}
sub by_walked_regex {
my @such = @{ $_[0] };
my @lin = @{ $_[1] };
line:
while ( my $l = shift @lin ) {
for( @such )
{ next line unless $l =~ /$_/ }
print STDERR "wr $l";
}
}
Dies ist Zeile Eins, wird gefunden.
Dies ist Zeile Zwei, wird nicht gefunden.
Dies ist Zeile Drei, wird auch nicht gefunden.
1
2
3
4
5
phaylon@hamlett:~/ptests> perl search_bench.pl 2>/dev/null
Rate w_reg index
w_reg 13687/s -- -66%
index 40145/s 193% --
phaylon@hamlett:~/ptests>
This is perl, v5.8.3 built for i586-linux-thread-multi
1
2
3
4
phaylon@hamlett:~/ptests> cat /proc/cpuinfo
...
cpu MHz : 2994.546
cache size : 1024 KB
1
2
3
4
phaylon@hamlett:~/ptests> perl search_bench.pl 2>/dev/null
Benchmark: timing 1000000 iterations of index, w_reg...
index: 25 wallclock secs (24.36 usr + 0.62 sys = 24.98 CPU) @ 40032.03/s (n=1000000)
w_reg: 74 wallclock secs (72.47 usr + 1.10 sys = 73.57 CPU) @ 13592.50/s (n=1000000)
10 Einträge, 1 Seite |