Forum: Object-Pascal / Delphi-Language
Delphi
by jbg,
19. Mär 2008
Klar geht es noch schneller. Nur wird es dann ziemlich lowlevelig und spezialisierter.
type
THackedStringList = class(TStrings) // funktioniert nur noch mit echten TStringList Klassen
public
FList: PStringItemList;
end;
function V2(s: TStringList): Integer;
var
Forum: Object-Pascal / Delphi-Language
Delphi
by jbg,
19. Mär 2008
Lass das ganze doch mal unter Delphi 1, 2, 3, 4, 5, 6, 7 und 2005 laufen. Dann wirst schon sehen, warum die das so gemacht haben. Tipp: Ab Delphi 2006 wird der FastMM4 als Standard Speichermanager eingesetzt.
Der FastMM ist fast nicht zu schlagen. Aber ein paar mickrige Millisekunden habe ich dann doch noch herausschlagen können. Die lassen sich aber nicht mittels GetTickCount ermitteln.
...
Forum: Object-Pascal / Delphi-Language
Delphi
by jbg,
19. Mär 2008
Da sind noch zwei UniqueString Aufrufe drinnen.
Aber das Hauptproblem sind die 3 LOCK Instruktionen die im LStrAsg enthalten sind (zwei Explizite und eine durch XCHG reg,mem). Und wenn z genutzt wird hat man den LStrAsg Aufruf in TStringList.Get und dann nochmal bei der Zuweisung an z. Das macht also 6 LOCKs, was der Geschwindigkeit natürlich gar nicht gut tut. Vor allem wenn man ein...