Re: Programmlaufzeiten Kategorie: Programmierung (von André H. - 17.03.2003 12:03) | |
Als Antwort auf Programmlaufzeiten von Thomas Steudle - 17.03.2003 9:47
| |
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 Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | |
Antwort schreiben Antworten: Re: Programmlaufzeiten (von Thomas Steudle - 17.03.2003 14:11) |