[quote=esskar,06.04.2006, 00:11][quote=Linuxer,05.04.2006, 10:38]Da kann man sich den RegEx sparen.[/quote]
wenn man sich split anschaut anschaut, könnt man meinen, dass es intern auch RegEx benutzt; vorallem wegen des RegExp pattern, dass du auch verwendet hast :)[/quote]
split benutzt Pattern, aber die split-Variante ist trotzdem dem RegEx vorzuziehen, da sie kein aufwendiges Umsetzen von Quantifiern treiben muss und sich auch keine geklammerten Ausdrücke merken muss.
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
use strict;
use warnings;
use Benchmark;
use vars qw/$count @data $line/;
$count = 1000000;
@data = (
'10.177.178.83;gr-emattig-IP1;Edgar Mattig',
'10.177.174.71;gr-akaraca-IP1;Adnan Karaca',
'10.177.165.137 gr-skahlert-IP1 Stefan Kahlert',
);
timethese( $count, {
'regex' => \&ME_regex,
'split' => \&ME_split,
});
sub ME_regex {
for $line ( @data ) {
my ($val) = $line =~ m/-(.*?)-/;
}
}
sub ME_split {
for $line ( @data ) {
my ($val) = (split(/-/, $line))[1];
}
}
Ergebnis:
Quote$ perl timeit.pl
Benchmark: timing 1000000 iterations of regex, split...
regex: 35 wallclock secs (34.03 usr + 0.01 sys = 34.04 CPU) @ 29377.20/s (n=1000000)
split: 27 wallclock secs (26.37 usr + 0.00 sys = 26.37 CPU) @ 37921.88/s (n=1000000)
$
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!