Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Frage zur Effizienz von switch() case Kategorie: Programmierung C (von Jo - 11.05.2011 16:25)
Als Antwort auf Re: Frage zur Effizienz von switch() case von PeterS - 11.05.2011 13:40

> > Hallo Peter,
> > in einem laufenden Projekt muss ich ca. 50 States abhandeln.
> >
> > Dazu bietet sich ja ein switch case Konstrukt an.
> >
> > Hintergrund: Ich möchte cases, die oft durchlaufen werden so einbauen, dass diese möglichst
> > wenig Performance verbrauchen.
> > Nun die Fragen: Wie erfolgt deine Interne Abarbeitung?
> > Werden cases die oben stehen schneller bedient wie welche die weiter unten stehen?
> > Hat die Reihenfolge der werte in den cases eine Auswirkung? Also ist z.B.
> >
> > case 0: â?¦ break;
> > case 1: â?¦ break;
> > case 2: â?¦ break;
> > case 3: â?¦ break;
> >
> > schneller oder langsamer als
> >
> >
> > case 1234: â?¦ break;
> > case 0: â?¦ break;
> > case 9999: â?¦ break;
> > case 25: â?¦ break;
> >
> > Danke für deine Antwort
> >
> > Viele Grü�e
> >
> > Jo
> >
> >
>
> Ein switch() Befehl macht einen Table Lookup und zwar von oben nach unten (d.h. in der
> Reihenfolge der definierten case Werte. Da der Lookup in Assembler geschieht, ist das
> switch() wesentlich effizienter als mehrere If's.
>
> Gruss Peter

Hallo Peter,
danke für die schnelle Antwort,
also damit sind die Werte und die Reihenfolge der Werte in den Cases für die Performance irrelevant
richtig? Es wird also nie ein "computed goto" in deinen Routinen verwendet.

Viele Grü�e
Jo



    Antwort schreiben


Antworten:

Re: Frage zur Effizienz von switch() case (von PeterS - 12.05.2011 12:53)