[quote=pq,21.04.2007, 15:31][quote=renee,21.04.2007, 14:26]Split dürfte aber schneller sein als die RegEx...[/quote]
wieso das?[/quote]
Das wuesste ich auch gerne. Man muss beachten, dass split ja auch einen regulaeren Ausdruck benutzt.
Ich habe es mal gebenchmarkt:
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
use strict;
use warnings;
use Benchmark qw(cmpthese);
my $klein = 'alpha - beta';
cmpthese (0, {
m_klein => sub {
my ($part) = $klein =~ m/^([^-]*)/;
},
split_klein => sub {
my ($part) = split /-/,$klein,2;
},
});
my $gross = 'alpha - ' . 'beta' x 10000;
cmpthese (0, {
m_gross => sub {
my ($part) = $gross =~ m/^([^-]*)/;
},
split_gross => sub {
my ($part) = split /-/,$gross,2;
},
});
Ergebnis:
Rate m_klein split_klein
m_klein 656550/s -- -21%
split_klein 834204/s 27% --
Rate split_gross m_gross
split_gross 38948/s -- -53%
m_gross 82317/s 111% --
Offenbar ist split bei kleinen Strings tatsaechlich etwas schneller (was man vielleicht durch Optimieren meines Regexes beheben kann), aber bei grossen Strings schneidet split weitaus schlechter ab. Das lieght imho daran, dass der lange zweite Teil des Strings sinnlos durch die Gegend kopiert werden muss.