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 PeterS - 12.05.2011 12:53)
Als Antwort auf Re: Frage zur Effizienz von switch() case von Jo - 11.05.2011 16:25

> > > 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
>

Da der Table Lookup in Assembler sehr schnell geht, ist es nicht so relevant, aber wenn die
Werte vorne in der Tabelle stehen, werden sie im Table Lookup schneller gefunden.

Gruss Peter


    Antwort schreiben


Antworten: