Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Programmlaufzeiten Kategorie: Programmierung (von Thomas Steudle - 17.03.2003 14:11)
Als Antwort auf Re: Programmlaufzeiten von André H. - 17.03.2003 12:03

Hallo André,

danke für die schnelle Antwort.

> Hast Du vielleicht noch andere Threads laufen ?
Ja es laufen noch zwei Threads, alle mit der gleichen Prio.

werde mich für dein 2tes Beispiel entscheiden, ist auch das
schnellste, und in Zukunft for-Schleifen so weit möglich umgehen.

mfg Tom

> Hallo Tom,
>
> Warum 28ms. Ich komme auf 7ms.
> Hast Du vielleicht noch andere Threads laufen ?
> Das würde die längere Laufzeit erklären.
>
> �brigens, so kommst Du auf 6ms und es wäre auch eleganter:
> >   k=i*8;
>   temp=IB[i];
>   for j = 0 ... 7
>    {
>     IBit[k+j]= (temp shr j) and 1;
>    } >
> DaÃ? dies immernoch so lange dauert liegt zu einem daran, daÃ?
> die For-Schleife selbst, also ohne Inhalt ca. 2ms benötigt und
> der Zugriff auf Array-Variablen immer relativ langsam ist.
>
> Und so wären es nurnoch 4ms:
> >   k=i*8;
>   temp=IB[i];
>   IBit[k]= temp and 1;
>   IBit[k+1]= (temp shr 1) and 1;
>   IBit[k+2]= (temp shr 2) and 1;
>   IBit[k+3]= (temp shr 3) and 1;
>   IBit[k+4]= (temp shr 4) and 1;
>   IBit[k+5]= (temp shr 5) and 1;
>   IBit[k+6]= (temp shr 6) and 1;
>   IBit[k+7]= (temp shr 7) and 1; >
> MfG André H.
>
>
> > Hallo zusammen,
> >
> > ich habe mich etwas mit Programmlaufzeiten beschäftigt.
> > Doch kann ich nicht ganz glauben was ich herausgefunden
> > habe. z.B. der folgende Programmausschnitt
> >
> >     /* Startzeit festhalten */
> >     Startzeit=system.timer();
> >
> >     // Bits bearbeiten
> >     for j = 0 ... <= 7
> >      {
> >       if IB[i] & (1 shl j) IBit[(i*8)+j]=1; else IBit[(i*8)+j]=0;
> >      }
> >
> >     // letzte Laufzeit ermitteln
> >     Laufzeit = system.timer()-Startzeit;
> >
> > In der Variable Laufzeit kann ich Werte von so ca. 26-28
> > beobachten, und wenn ich das mit system.timer() richtig
> > verstanden habe sind das ms. Zwar wird die Schleife 8x
> > durchlaufen, aber so richtig glauben kann ich das mit
> > den rund 28ms nicht. Da ich bis jetzt noch keine Info
> > gefunden habe um dies mal nachzurechnen jetzt meine
> > Frage: Stimmt das alles so oder hab ich es nur nicht
> > verstanden?
> >
> > mfg Tom  


    Antwort schreiben


Antworten: