![]() |
Re: Übergebenes Array: low() immer 0?
oder noch besser:
Delphi-Quellcode:
Wichtig ist
var
C: array[Boolean] of Integer; I: Integer; J: Boolean; begin C[False] := 0; C[True] := 0; J := False; for I := Low(Array) to High(Array) do begin Inc(C[J], Array[I]); J := not J; end; Result := C[False] + C[True] * 3; end; 1.) Multiplikation mit *3 wird nur einmalig durchgeführt 2.) es gibt in der Schleife nur Additionen 3.) es gibt in der Schleife KEINE bedingten Sprünge, sprich Abfragen wie IF THEN und somit keine unnötigen Branches in der CPU, ergo der Code kann wesentlich schneller ausgeführt werden 4.) durch das separate J ist der Algo. unabhängig von der Array[] Deklaration 5.) durch J: Boolean muß auf J keinerlei zeitraubende Operation durchgeführt werden, ein simples NOT reicht aus 6.) durch die separate Addition auf 2 Elementesummen halbiert sich die Gefahr eines Integer-Überlaufes und erst am Ende der Schleife kann es eine ERangeCheck Exception geben Gruß Hagen |
Re: Übergebenes Array: low() immer 0?
Danke für eure Ideen! Vor allem die Lösung vion negaH sagt mir wirklich zu.
Auch wenn, oder viel mehr gerade weil, ich mich erstmal reindenken und es an meine Bedürfnisse anpassen musste ;-) |
Re: Übergebenes Array: low() immer 0?
Zitat:
Gruß Hagen |
Re: Übergebenes Array: low() immer 0?
Zitat:
Schönen Gruß, Thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:33 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