Re: Laufzeit diverser Funktionen Kategorie: Programmierung C (von PeterS - 2.08.2006 23:13) | |
Als Antwort auf Laufzeit diverser Funktionen von ortwin - 2.08.2006 17:40
| |
Hallo, das Problem ist ziemlich schwierig. Der Compiler erzeugt ja kein Assembler, sondern einen Bytecode, ähnlich wie Java. Jeder dieser Bytecodes hat eine unterschiedliche Laufzeit. Eine 16bit Addition ist noch ziemlich flott, aber float Operationen sind so langsam, das einem das Grausen kommt, der Atmel Mega ist ja auch eine 8 Bit CPU. Die eingebauten Funktionen wie z.B. I2C und Serial_ReadExt() sind optimiert in Assembler geschrieben, aber jede Funktion hat ihre eigene Laufzeit. Interaktionen (sprich warten) auf externe Daten sidn nicht abschätzbar. Hinzu kommen noch der 10ms Interrupt, oder z.B. Interrupts für die serielle. Ich fürchte Du mu�t Deine Schleife wirklich per Hand ausmessen. �brigens stand im Forum das "a=a+a+a+a" 100µsec dauert. "a=1" würde ich auf ca. 20µsec schätzen. Der Mega128 ist ürbigens wie der Mega32 mit ca. 14,7 Mhz getaktet. Da beim Mega128 mehr Platz vorhanden ist, ist der Interpreter etwas besser optimiert und dadurch etwas schneller. C-Control Pro wurde als Nachfolger vom C-Control 1 gebaut. C-Control Pro ist schneller, hat mehr Speicher, und mehr Schnittstellen. C-Control Pro hat Multithreading und einen Debugger mit Breakpoints und Variablen- überwachung. C-Control Pro unterstützt C und BASIC. ABER C-Control Pro kann nicht mit einem hochoptmierenden Compiler oder Assembler mithalten, wo alleine Peripherie mit Entwicklungsumgebung ca. $400-500 kostet. Komplexe Abläufe in nur 2,3ms sind vermutlich kaum zu schaffen. Gruss Peter > Hallo zusammen, > > ich bin gerade an der Projektierung einer Anwendung wo es auf die Laufzeit des Programmes ankommt. > ich habe 2,3 msec. Zeit um wieder am Einstiegspunkt zu landen. > das klingt zunächst mal so als ist da endlos Zeit, > aber ich mu� in meiner Schleife mehrfach I2C() und Serial_ReadExt() ansprechen. > > Frage 1: > ich habe hier im Formum gelesen, da� der Befehl a=a+1 ca. 5usec dauern soll > --- stimmt das überhaupt --- ??? > > Frage 2: > wenn ich jetzt z.B. I2C_Start() aufrufe - wieviele Zyclen werden dann verbraucht ? > bei Serial_ReadExt() hängt die Laufzeit ja sicher davon ab ob ein Zeichen gelesen wurde oder nicht. > > Zusammenfassung: > wie lange dauert beim Mega128 mit dem Conrad Bootloader / Interpreter ein Befehl genau > gibt es eine Liste wieviel Zyclen (oder Zeit) ein von Conrad mitgelieferter Befehl verbraucht. > > > Würde mich sehr freuen wenn hier jemand was exaktes weiss, da ich ansonsten die Sache mit dem > Oszi einzeln ausmessen mu�. > > Bitte schreibt nicht zurück "guck mal ins ATMEL Handbuch" das habe ich schon. > ich wei� aber nicht welchen AssamblerCode der Conrad Compiler erzeugt. > Wenn man soetwas einsehen könnte , könnte ich die Befehle abzählen und mit 1/16000000 multiplizieren. > > viele Grü�e aus Aalen bei heute mal endlich 20,7 Grad :-) > > ortwin > > | |
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum