Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Function vereinfachen, bei vielen if abfragen (https://www.delphipraxis.net/49558-function-vereinfachen-bei-vielen-if-abfragen.html)

Jasocul 13. Jul 2005 07:10

Re: Function vereinfachen, bei vielen if abfragen
 
War case nicht auf 256 Fälle beschränkt?

Thanatos81 13. Jul 2005 07:27

Re: Function vereinfachen, bei vielen if abfragen
 
Kann ich in der OH keinen Hinweis drauf entdecken, aber selbst wenn, dann setzt er halt 6 case-Anweisungen nacheinander. Ist immer noch übersichtlicher/kürzer als 1500 if-then-Abfragen :roll:

Jasocul 13. Jul 2005 07:36

Re: Function vereinfachen, bei vielen if abfragen
 
Habe gerade nochmal nachgesehen. Es muss lediglich ein Ordinaltyp sein (Integer geht z.B. auch).
Die Info mit den 256 Fällen ist vermutlich noch aus Turbo-Pascal-Zeiten. Sorry. (Ja, ja. Das Alter)

r2c2 13. Jul 2005 07:41

Re: Function vereinfachen, bei vielen if abfragen
 
Aus performance-Gründen würde ich aber noch 1500 else mehr schreiben:
Delphi-Quellcode:
if z=0 then
  Result := ...
else if z=1 then
  Result := ...
else if ...
Das macht bei 1500 Abfragen schon was aus. Ansonsten: Ohne Systematik is das wohl nicht einfacher zu machen...

mfg

Christian

//Edit: Da sich das mit den 256 Fällen ja erledigt hat is Case die bessere Lösung, sollte eigentlich auch etwas schneller sein.

Jasocul 13. Jul 2005 07:43

Re: Function vereinfachen, bei vielen if abfragen
 
Sicher, dass die Performance besser ist? Ich war bisher der Meinung, dass "Case" genau so arbeitet.

r2c2 13. Jul 2005 07:47

Re: Function vereinfachen, bei vielen if abfragen
 
Zitat:

Zitat von Jasocul
Sicher, dass die Performance besser ist? Ich war bisher der Meinung, dass "Case" genau so arbeitet.

IMHO geht Case die Werte in ner Schleife durch(warum sollte dann auch sonst ein Ordinaltyp vorausgesetzt werden?). Case is dann wahrscheinlich in der Hinsicht irgendwie optimiert. Ansonsten wär das mit den Ordinaltyp ja Blödsinn.

mfg

Christian

DerDan 13. Jul 2005 07:54

Re: Function vereinfachen, bei vielen if abfragen
 
Ich hab mal nachgesehen,

bei einer Case Anweisung mit lediglich 9 [0..8] aufeinanderfolgenden Werten wird bereits eine Sprungtabelle angelegt. Das heist es wird quasi berechnet an welche Stelle das Programm verzweigt.

Effizienter geht das nicht mehr.

das das in einer Schleife abgearbeitet wird oder in eine "if then else" orgie aufgedröselt wird stimmt nicht.


derDan

marabu 13. Jul 2005 07:56

Re: Function vereinfachen, bei vielen if abfragen
 
Und dazu noch das hier: Compiler-Verhalten bei case statements

marabu

Jasocul 13. Jul 2005 08:02

Re: Function vereinfachen, bei vielen if abfragen
 
Klasse Link. Danke marabu. Jetzt bin ich mal wieder auf einem aktuellen Stand.
Damals, anno dingens, da war das alles noch anders. :lol:

DerDan 13. Jul 2005 08:15

Re: Function vereinfachen, bei vielen if abfragen
 
@Jasocul

Nicht ist so beständig wie die Änderung!


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:29 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz