|< 1 2 >| | 12 Einträge, 2 Seiten |
(@title)=split( /, /,$_);
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @array = ('foo, bar', 'bar, baz', 'foo, bar, baz');
@array = map {s/,//g; $_} @array;
print Dumper \@array;
s~,~~g for @array;
s~,~~g for @array;
s~,~~g for @array;
1
2
3
4
5
6
use Benchmark qw(:all);
my $string = 'Hallo, Welt blub blub, foo, bar.' x 10_000;
cmpthese( 10000, {
'regex' => sub { $string =~ s/,//g; },
'trans' => sub { $string =~ tr/,//d },
});
1
2
3
4
5
6
7
8
9
use Benchmark qw(:all);
my @array;
for ( 0..1_000 ) {
$array[$_] = 'Hallo, Welt blub blub, foo, bar.';
}
cmpthese( 10000, {
'regex' => sub { s/,//g for @array; },
'trans' => sub { tr/,//d for @array; },
});
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl
use Benchmark qw(:all);
cmpthese( 10000, {
'regex' => sub {my $string = 'Hallo, Welt blub blub, foo, bar.' x 1000; $string =~ s/,//g; },
'trans' => sub {my $string = 'Hallo, Welt blub blub, foo, bar.' x 1000; $string =~ tr/,//d },
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
~/perl/test> cat tr_vs_s2.pl
#!/usr/bin/perl
use Benchmark qw(:all);
my $string = 'Hallo, Welt blub blub, foo, bar.' x 10_000;
cmpthese( 10_000, {
'regex' => sub { (my $new = $string) =~ s/,//g; },
'trans' => sub { (my $new = $string) =~ tr/,//d },
});
~/perl/test> perl tr_vs_s2.pl
Rate regex trans
regex 66.7/s -- -78%
trans 300/s 350% --
QuoteDir ist schon klar, dass in deinen beiden Benchmarks die Ersetzung nur je einmal vorgenommen wird, oder? Der String (bzw. das Array) enthält nach der ersten Ersetzung nämlich keine Kommata mehr.
|< 1 2 >| | 12 Einträge, 2 Seiten |