Forum: Neuen Beitrag zur Code-Library hinzufügen
by alzaimar,
25. Dez 2007
So, jetzt hab ich mal ein alternatives Testszenario erstellt.
Test #1:
Ein langer String (Länge einstellbar) wird mit zufälligen Großbuchstaben gefüllt. Dann wird die Routine nacheinander für alle Buchstaben aufgerufen. Die gesamte Ausführungszeit wird gemessen und das Ergebnis dargestellt.
Test #2:
Das '_' Zeichen wird zufällig (Häufigkeit einstellbar) in einen String aus Buchstaben...
Forum: Neuen Beitrag zur Code-Library hinzufügen
by alzaimar,
24. Dez 2007
Hi Grenzgaenger. Hast Recht, Kinder sind inner Falle und nu is Ruhe im Stall.
Teste mal mit längeren Strings, da sollte der Performancegewinn schon mehr auffallen.
Forum: Neuen Beitrag zur Code-Library hinzufügen
by alzaimar,
24. Dez 2007
Kommt auf die Testdaten an. Wenn die zu eliminierenden Doubletten nicht ganz vorne stehen, bringt das schon etwas.
Da hier mal wieder Pointerarithmetik schneller zu sein scheint als Indizierung eines Strings (beim FastPos-Projekt ist es grad anders herum) habe ich meine Variante mal mit Pointern implementiert. Das wird -bei mir- doppelt so schnell. Kann eigentlich nicht sein, aber es scheint...
Forum: Neuen Beitrag zur Code-Library hinzufügen
by alzaimar,
24. Dez 2007
Ich habe eine Stringindizierung weniger als Du. Also ich nicht, sondern der Code. :stupid:
Versuch doch mal:
procedure ReplaceDChar(Var Quelle: string; aChar: char);
var
i, j: integer;
c : Char;
label
1;
Forum: Neuen Beitrag zur Code-Library hinzufügen
by alzaimar,
24. Dez 2007
Ick bin ja auch blöd: Übergebe ein Zeichen, dessen doppelte Vorkommen weggeschnippelt werden sollen, und dann wird dieses Zeichen ignoriert...
Function RemoveCharRepetitions(Const aText: String; aChar: Char): String;
Var
i, j: Integer;
c: Char;
Begin
setLength(Result, Length(aText));
If Length(aText)=0 Then Exit;
Forum: Neuen Beitrag zur Code-Library hinzufügen
by alzaimar,
24. Dez 2007
Hier
Function RemoveCharRepetitions(Const aText: String; aChar: Char): String;
Var
i, j: Integer;
c: Char;
Begin
setLength(Result, Length(aText));
If Length(aText)=0 Then Exit;
j := 1;