Thread String, character, suche und ersetzen
(26 answers)
Opened by Graf Herschel at 2018-12-11 10:42
So, ich habe noch mal ein paar Routinen hinzugefügt und manche nochmal variiert. Hier noch das Benchmark-Ergebnis als Abschluss.
Zuerst wird jede Routine einmal mit einem kurzen String testweise aufgerufen, um die Funktion der Routine zu erkennen. Danach wird ein neuer Teststring aus random Characters generiert und damit getestet. Code: (dl
)
1 Smartmatch is experimental at backwards_replace.pl line 58. Schema: Alle Routinen nehmen den zu verarbeitenden String entgegen und geben den überarbeiteten String wieder zurück. Gewinner ist: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 sub rindex_substr_max { my ( $string, ) = @_; my $max = 0; for my $x ( qw( B C f ) ) { my $i = rindex $string, $x; $max = $i if $i > $max; } substr( $string, $max, 1 ) = "K"; return $string; } Was mich überrascht, dass diese rindex_substr_max() soviel schneller als meine erste rindex_substr() ist: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 sub rindex_substr { my ( $string, ) = @_; my %pos; for my $x ( qw( B C f ) ) { $pos{$x} = rindex($string,$x); } my $replace = ( sort { $pos{$b} <=> $pos{$a} } keys %pos )[0]; substr( $string, $pos{$replace}, 1 ) = "K"; return $string; } Ich hätte nicht gedacht, dass dieser Hash %pos und die Sortierung seiner drei Elemente soviel Zeit frisst... 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! |