-
-
Erfahrener Benutzer
Robotik Visionär
Wie gut der C Compiler optimiert hängt stark von der Aufgabe ab. Für Längere Programme und eher komplizierte Prgrammteile ist der Compiler im Vorteil. Bei sehr kurzen Teilen und gerade bei Interrupts ist man in Assembler klar im Vorteil, denn man kann besser bestimmen welche Daten man in den Registern läßt, und was man ins Ram Schicken muß. Um da auch in C schnell zu werden muß man dann schon einiges tricksen mit Register variablen, unions usw. Es hängt dann natürlich auch davon ab wie gut man im Assembler optimieren von Hand ist, aber ohne Übung kriegt man auch in C langsamen Code hin (z.B. indem man integer und unsigned Int mischt, wo es nicht nötig ist). Der richtig große Vorteil von Assembler kommt dann, wenn das Programm so klein ist, das man das RAM gar nicht braucht. Gerade beim AVR ist der RAM Zugriff nicht sehr effektiv.
Der Faktor 2 ist wirklich sehr grob. Wenn der Code dem C Compiler liegt, hat man oft fast keinen Unterschied oder leichte Vorteile für den Compiler. Wenn man Register statt RAM benutzen kann, kann der Unterschied auch größer werden.
Beim optimieren von Code muß man sich auch immer fragen, ob das überhaupt lohnt, denn was hilft es wenn das halbe flash leer bleibt oder man länger auf den Tastendruck wartet.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen