![]() |
Sorry, aber auch deine Möglichkeit bringt keinen Zeitgewinn!
|
Der Geschwindigkeitsgewinn ist bei wenigen Durchläufen minimal. Bei meinem Test '10+20*10-x^2*234,5+(10+20)*30' mit 10000 Durchläufen waren es ca. 50 ms Gewinn;
Ändere mal meine pos0Ex Funktion in folgende um. Danach hatte ich einen Gewinn zu deiner Version von ca. 200 ms.
Code:
[b]function[/b] pos0Ex([b]const[/b] c: Char; [b]const[/b] s: [b]string[/b]; out ResultValue: Integer): Integer;
[i]//pos0Ex findet das Zeichen "+","-" ... nicht innerhalb von Klammern[/i] [b]var[/b] k, z: Integer; [i]//z:=Anzahl der Klammern[/i] [b]begin[/b] z := 0; [b]for[/b] k := 1 [b]to[/b] Length(s) [b]do[/b] [b]begin[/b] [b]case[/b] s[k] [b]of[/b] '(': Inc(z); ')': Dec(z); [b]else[/b] [b]if[/b] (z = 0) [b]and[/b] (s[k] = c) [b]then[/b] [b]begin[/b] Result := k; [i]//Treffer[/i] ResultValue := k; Exit; [b]end[/b]; [b]end[/b]; [b]end[/b]; ResultValue := 0; Result := 0; [b]end[/b]; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 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