Forum: Sonstige Fragen zu Delphi
Delphi
by Go2EITS,
12. Apr 2009
Ich habe die Version von Christian einfach mal probeweise mit der Mengenabfrage probiert.
Und das Ergebnis ist, 145 ms zu 45ms mit der Mengenabfrage! So sieht der momentan schnellste Code aus:
function ClearStr4(const Str: string): String;
const
ValidChars = ;
var
i,x,count: Integer;
begin
if Str = '' then Exit;
result:= '';
Forum: Sonstige Fragen zu Delphi
Delphi
by Go2EITS,
11. Apr 2009
@3_of_8
Bin mir da nicht so sicher, ob es mit Pointern manchmal doch schneller geht... :gruebel:
Vielleicht, weil man dann maschinennäher programmiert?
Forum: Sonstige Fragen zu Delphi
Delphi
by Go2EITS,
11. Apr 2009
Danke Christian und Cyf, nochmals 50% rausgeholt.
Kleine Änderungen am Vorschlag vorgenommen, damit der Text auch angezeigt wird:
// Zur Erinnerung:
// var
// ValidChars1: array of Char = //('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','...
Forum: Sonstige Fragen zu Delphi
Delphi
by Go2EITS,
11. Apr 2009
Ich habe mal beide Versionen nachstehend eingefügt.
a) Version mit der Mengenabfrage und b) Abfrage mit einer Tabelle.
program ClearString1;
{$APPTYPE CONSOLE}
uses
FastMM4, FastMove,
SysUtils, // Für Profiler.inc notwendig
Windows; // Für Profiler.inc notwendig
Forum: Sonstige Fragen zu Delphi
Delphi
by Go2EITS,
11. Apr 2009
@Jbg: Wie soll das gehen?
Wenn ich einmal den Übergabestring durchlaufe und gleichzeitig den neuen String bilde mit "result:=result+Str" habe ich wohl die schnellste Version.
Ein
for i:=1 to Length(Str) do if str in ValidChars then s:=s+str;
result:=s;
bringt keinen Geschwindigkeitsvorteil.
Ich gehe mal davon aus, dass "str in ValidChars " abbricht, wenn es einen gültigen Char gefunden...
Forum: Sonstige Fragen zu Delphi
Delphi
by Go2EITS,
11. Apr 2009
@Hawkeye219:
Opps, so einfach. Es funktioniert. Allein wäre ich nie darauf gekommen. Danke! :thumb:
Wenn man FastMM4 und FastNove einbindet, wird die Funktion noch schneller.
Forum: Sonstige Fragen zu Delphi
Delphi
by Go2EITS,
11. Apr 2009
Hallo, nachstehendes Programm bitte einmal ausprobieren.
In der vorliegenden Version wird Clearstring1 immer langsamer. Ich kann es nicht erklären.
Die drei Funktionen unterscheiden sich nur durch die Konstanten:
1. ValidChars = ;
2. ValidChars = ;
3. ValidChars = ;
Paradoxerweise ist die zweite Variante schneller als die erste! (Ich habe nur ein SPACE in ValidChars hinzugefügt)....