index() ist am schnellsten:
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
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;
},
mit_index => sub {
my $part = substr($klein,0,index($klein, "-"));
}
});
my $gross = 'alpha - ' . 'beta' x 10000;
cmpthese (0, {
m_gross => sub {
my ($part) = $gross =~ m/^([^-]*)/;
},
split_gross => sub {
my ($part) = split /-/,$gross,2;
},
mit_index => sub {
my $part = substr($gross,0,index($gross, "-"));
}
});
Ergibt bei mir
Rate m_klein split_klein mit_index
m_klein 302083/s -- -12% -82%
split_klein 344837/s 14% -- -79%
mit_index 1653727/s 447% 380% --
Rate split_gross m_gross mit_index
split_gross 41553/s -- -18% -98%
m_gross 50924/s 23% -- -97%
mit_index 1764431/s 4146% 3365% --