kramann.info
© Guido Kramann

Login: Passwort:










5.2.5.6 Performance-Test der Klasse RS232 mittels AVR-Simulator und Vergleich der Größe der Maschinenprogramme miteinander
  • Um im Cycle-Counter zu sehen,wieviele Taktzyklen zum Senden einer 8-Bit-Zahl benötigt werden, muß die Warteschleife auskommentiert werden, die darauf wartet, dass der Sendepuffer frei wird:
  • //while( !(UCSRA & (1<<UDRE)) );
  • performance.zip enthält noch einmal alle vier untersuchten Projekte und jedes Projekt noch einmal mit dem Zusatz _zeichen, wo für den Performancetest die Auskommentierung vorgenommen wurde.
performance.zip - Download aller nachfolgend beschriebenen Projekte
Projektname Beschreibung Größe .hex-File in Byte Anzahl Taktzyklen,
um eine 8-Bit-Zahl in Zeichen zu senden
rs232_senden Prozedurale Variante zum Senden von 8-Bit-Zahlen, alles in main-Methode. 1347 363
rs232_senden_funktion Prozedurale Variante unter Verwendung von Funktionen. 1617 399
rs232_senden_makro Prozedurale Variante unter Verwendung eines Makros, das wie eine Funktion verwendet werden kann. 1425 351
rs232_oop_senden Objektorientierte Variante mit "aufwändigem" Konstruktor und ohne Vererbung 1478 335
rs232_oop_senden_erben Objektorientierte Variante mit einfachem Konstruktor und mit Vererbung 1494 335
rs232_oop_senden_statisch Objektorientierte Variante mit statischen Methoden und Vererbung 1494 335
rs232_oop_senden_statisch2 wie zuvor, jedoch wird hier kein Aufruf keiner Unterfunktion in sendeZahl(...) vorgenommen. 1486 335
rs232_oop_senden_statisch3 wie rs232_oop_senden_statisch, jedoch werden wie bei der prozeduralen Varaiante die Ziffern vorberechnet und in den Variablen l, m, r gespeichert. 1494 337

Tabelle 5.2.5.6-1: Vergleich der prozeduralen Variante zum Senden von 8-Bit-Zahlen mit drei objektorientierten Varianten.

Fazit

  • Den geringsten Speicherplatz verbraucht die Variante, die nur aus einer main-Methode besteht.
  • Jedoch variiert der Speicherplatzbedarf gar nicht so stark: Maximum=Variante mit C-Funktionen 100% , Minimum=Variante mit main-Methode 83%, kleinste C++-Varianten: 91%
  • Das Kompilat der C++-Programme ist generell performanter, d.h. schneller, als alle C-Kompilate.
  • Ob mit statischen Methoden oder Vererbung gearbeitet wird, oder nicht, spielt sowohl für den Speicherbedarf, als auch für die Performance kaum eine Rolle.
  • Das Inlinen von Unterfunktionsaufrufen bringt überraschenderweise gar keine Perfortmance-Verbesserung.
  • Der C++-Compiler arbeitet sehr effizient und hat keinerlei Einbußen gegenüber dem C-Compiler und wird deshalb für die weiteren Projekte bevorzugt verwendet.