Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: if ... else, 2 mal if oder case ?

  Alt 6. Jun 2005, 08:26
@nailor: Leider compiliert Delphi keine Sprungtabellen. Wenn dem so wäre, dann würde Delphi ...
1. meckern, wenn die CASE-Bedingungen einen sehr grossen Zahlenraum abbilden. Wenn Du z.B.
Delphi-Quellcode:
Case Foo of
  -maxint : Bar;
   maxint : Sockenshoos;
  End;
schreibst, wäre die Sprungtabelle verdammt gross.
2. Würde der Debugger beim Steppen nicht durch die CASE-Anweisungen wandern.
3. Würde der ASM-Code auch irgendwie anders aussehen.

3 habe ich nicht gecheckt, zu 1 fällt mir der UCSD-Compiler aus den 70er Jahren des vorigen Jahrhunderts ein und zu 2 nix weil sonnenklar.

Ich bin kein Compiler-Profi, könnte mir aber vorstellen, das man so ein CASE variabel compilieren könnte. Ist der Zahlenraum (und damit die resultierende Sprungtabelle) halbwegs übersichtlich, kämen Jumptables, ansonsten IF...ELSE Konstrukte in Betracht. Warum Delphi das offensichtlich nicht macht, ist mir ein Rätsel.

Die Frage (Was ist schneller) ist wirklich nur von theoretischer Bedeutung, aber ich möchte wissen, WIE mein Compiler übersetzt. Das Detail hier ist unwichtig, aber dennoch sehr interessant.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat