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