Thread Leerzeichen-Regex lässt StackExchange ausfallen?
(27 answers)
Opened by GwenDragon at 2016-07-21 13:24
Habe ich da einen Denkfehler?
Ich habe Dein Skript einmal ausgeführt, um ein Gefühl für die Laufzeit zu bekommen. Und es lief in akzeptabler Zeit durch. Code: (dl
)
1 timethis 100000: 5.43372 wallclock secs ( 5.43 usr + 0.00 sys = 5.43 CPU) @ 18419.60/s (n=100000) Dann habe ich das Skript etwas abgeändert, um mit echtem "$" zu arbeiten. D.h. den String in $inputB lass ich wirklich mit Spaces enden (ohne das B am Ende). Und die s/// habe ich geändert, dass wirklich nach Spaces am Ende ($) gesucht werden soll und diese dann durch Leerstring ersetzt werden... Die Laufzeit wurde lang, sehr lang für den C2A ... Keine Ahnung, ob ich warten mag, bis er fertig wird. 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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 use strict; use warnings; use Benchmark qw(:all :hireswallclock) ; our $inputA = "X".(" \t" x 10000)."A"; our $inputB = "X".(" \t" x 10000); # spaces at the end our $m1A = 0; our $m1B = 0; our $m2A = 0; our $m2B = 0; my $c1A = <<'CODE'; my $s = $inputA; $m1A++ if ($s =~ s/[\s\u200c]+$//g); CODE my $c1B = <<'CODE'; my $s = $inputB; $m1B++ if ($s =~ s/[\s\u200c]+$//g); CODE my $c2A = <<'CODE'; my $s = $inputA; $m2A++ if ($s =~ s/(?<=\S)[\s\u200c]+$//g); CODE my $c2B = <<'CODE'; my $s = $inputB; $m2B++ if ($s =~ s/(?<=\S)[\s\u200c]+$//g); CODE timethis(100_000,$c1A); timethis(100_000,$c1B); timethis(100_000,$c2A); timethis(100_000,$c2B); print "M1A: $m1A\n"; print "M1B: $m1B\n"; print "M2A: $m2A\n"; print "M2B: $m2B\n"; Ich habe ausreichend gewartet und hier das Ergebnis: Ausgabe: Code: (dl
)
1 timethis 100000: 12.2518 wallclock secs (12.18 usr + 0.00 sys = 12.18 CPU) @ 8208.16/s (n=100000) Getestet auf einem WinDOS 7 mit einem Perl 5.18.0 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! |