Registriert seit: 13. Aug 2003
1.111 Beiträge
|
Re: [Optimiert] Explode Prozedur - Reloaded (Ersatz für Code
25. Feb 2008, 15:43
also mit der Lösung im Anhang bin ich auf 93,1 MB pro Sekunden.
Im Vergleich zur ersten Lösung eine Steigerung um 300 Prozent.
Using TStringExploder in TStringList
100 chars per line; Itemlänge: 10; 1000000 lines in 1047 tics, 955110 lines per sec, 93,3 mb/s (del = ";")
10000 chars per line; Itemlänge: 100; 50000 lines in 1844 tics, 27115 lines per sec, 264,8 mb/s (del = ";")
1000000 chars per line; Itemlänge: 1000; 500 lines in 1610 tics, 311 lines per sec, 303,3 mb/s (del = ";")
100 chars per line; Itemlänge: 5; 1000000 lines in 1422 tics, 703235 lines per sec, 68,7 mb/s (del = ";")
1000 chars per line; Itemlänge: 5; 500000 lines in 6796 tics, 73573 lines per sec, 71,8 mb/s (del = ";")
Noch schneller wird es, wenn man nur die Hälfte der Columns benötigt !!
zum Testen.
For ColIDX := 0 To (d.ColCount Div 2) Do begin
// s.Add(d.Columns[ColIDX]); // Bremse ....
s1 := d.Columns[ColIDX];
end;
aber bitte vorsichtig, die kapslung stürzt noch ab bei sehr großen Strings, wahscheinlich wegen dem Arry, ist alles ungetestet. hatte keine Zeit mehr.
am besten die Funktionalitäts-logik irgendwie in die eigene Klasse die es benötigt, integrieren ...
unterstützt auch im Moment nur die Suche nach einem Zeichen ...
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
|