![]() |
Re: Diese Funktion schneller machen?
Zitat:
Zitat:
|
Re: Diese Funktion schneller machen?
Zitat:
|
Re: Diese Funktion schneller machen?
ok ok :duck: geb mich geschlagen, bitte nicht mit schneebällen werfen :freak:
|
Re: Diese Funktion schneller machen?
Hi,
spaßeshalber hab ich mal 'nen vergleich zwischen StringReplace und Nelsonis Variante gemacht, raus kam bei StringReplace 1297 Ticks und bei der anderen lediglich 62 Ticks (bei jeweils 100000x aufrufen). Pos + StringReplace ist also definitiv die langsamere Methode ;) cu |
Re: Diese Funktion schneller machen?
@mütze: das ganze sollte wenn überhaupt nur die funktionen aus der Unit "System" bzw "Windows" verwenden
@jim: der + operator ist aber (unbedeutend?) schneller als inc(). @Robert: dann müsste ich die unit SysUtils einbinden. Zitat:
|
Re: Diese Funktion schneller machen?
Zitat:
Delphi-Quellcode:
Sieht zwar Länger aus, denke aber, dass es so schneller ist, da die ganzen Indexzugriffe entfallen. Ist natürlich bissle kryptisch, wenn Fragen sind, dann frag.
function fmtstr(const s: string; const c: char): string;
var i, len : integer; ResLen : Integer; b : boolean; Start : Integer; resPtr : PChar; sPtr : PChar; endsPtr : Pchar; begin if s <> '' then begin b := false; Len:=Length(s); setlength(result, len); Start:=1; sPtr:=Addr(s[1]); resPtr:=Addr(result[1]); endsPtr:=Addr(s[length(s)]); while (sPtr^=c) and (sPtr<endsPtr) do begin inc(Start); inc(sPtr); end; ResLen:=0; for i := Start to Len do begin if (sPtr^ <> c) or (not b) then begin resPtr^ := sPtr^; inc(resPtr); inc(ResLen); end; b:=sPtr^=c; inc(sPtr); end; if (resPtr-1)^ = c then setlength(result, reslen-1) else setlength(result, reslen); end; end; |
Re: Diese Funktion schneller machen?
Zitat:
[edit] Zitat:
|
Re: Diese Funktion schneller machen?
Zitat:
|
Re: Diese Funktion schneller machen?
danke jim, ich testes gleich mal :)
btw: in der OH steht irgendwo "Tipp: der + operator ist schneller als inc" |
Re: Diese Funktion schneller machen?
OT:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz