Thread Regexes: Geschwindigkeitsoptimierung
(13 answers)
Opened by GoodFella at 2007-04-06 19:31
Habe noch weitere Patterns getestet, unter anderem folgende Funktion, die die lansgamen \s* am Anfang und Ende meiner Regexes überflüssig machen soll:
Code (perl): (dl
)
1 2 3 4 5 6 7 sub remove_wrapping_whitespaces { my $string = shift; $string =~ s/^\s+//; $string =~ s/\s+$//; return($string); } Was ich ergoogeln konnte, ist das wohl die effektivste Methode dafür. Im Vergleich mit der qr//-Version ist diese aber deutlich schneller: Code (perl): (dl
)
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 #!/usr/bin/perl use strict; use warnings; use Benchmark ':all'; my $original = ' Bla Test Jetzt kommen nochmal Leerzeichen '; my $string; my $re1 = qr/^\s+/o; my $re2 = qr/\s+$/o; sub one { $string = $original; $string =~ s/$re1//o; $string =~ s/$re2//o; } sub two { $string = $original; $string =~ s/^\s+//; $string =~ s/\s+$//; } cmpthese (200000, { one => sub { &one; }, two => sub { &two; } } ); ergibt: Quote (Habe mich schon an meine (Teil-)Monologe gewöhnt, sobald es etwas exotischer wird ^^) [EDIT] Das Entfernen der Whitespaces am Stringanfang und Ende zusammen mit dem Entfernen der /^\s* .. \s*$/ hat genau den Effekt gehabt, den ich wollte!!! 105 Zeilen pro Sekunde!!! :DDD\n\n <!--EDIT|GoodFella|1175912293--> |