Geschwindigkeit von C - Befehlen

Hallo,

ich muss ein Programm schreiben, bei dem einige Funktionen sehr sehr oft aufgerufen werden und auf eine Datenstruktur zugreifen. Das Programm und damit die Funktion soll möglichst schnell sein.
Von der effizienz des Algorithmus mal abgesehen:

Welche C-Befehle sind schneller als andere?
Gibt es da Leistungstabellen?
Ist z.B. ein Vergleich von Zeigern schneller als ein Vergleich von Werten, ist z.B. eine For-Schleife schneller als eine while oder umgekehrt… . Rechnet C (wie es z.B. in Pascal ist) mit Wörtern schneller als mit Bytes?

Ich hoffe, ihr könnt mir da weiterhelfen, am besten mit so einer Befehlstabelle…

Ralph

Hallo Ralph,

>>Welche C-Befehle sind schneller als andere?
Grundsätzlich sind Befehle der Mathematikbibliothek (math.h)
als langsam einzustufen, z. B. kann man zur Steigerung der Geschwindigkeit, ein LUT für cos und sin Werte anlegen, statt die Funktionen jedesmal aufzurufen.
Funktionen, die Heap - Speicher anfordern, freigeben sind langsam.

>>Ist z.B. ein Vergleich von Zeigern schneller als ein Vergleich
>>von Werten
Vergleich ist beides mal gleich schnell.

>> ist z.B. eine For-Schleife schneller als eine
>> while oder umgekehrt…
Hier gibt es Unterschiede, z.B. unterscheiden sich Laufzeiten,
abhängig davon, ob man hoch oder runterzählt, aber das hängt
vom Compiler ab, aber wie es sich genau verhält weiß ich gerade nicht.

>>Rechnet C (wie es z.B. in Pascal
>>ist) mit Wörtern schneller als mit Bytes?
Das hängt denke ich von der Plattform ab, es ist ungünstig auf einem 8 Bit µC mit 32 Bit Werten zurechnen oder Zeiger zu oft zu verwenden(wenn sie 16 oder mehr Bit haben), auf einem 32 Bit
µP sollte man nicht unnötigerweise mit Bits sparen, sondern mit 32 Bit Werten arbeiten.

Wenn Du es genau wissen möchtest, laß Deinen Compiler ein Assemblerlisting erstellen und wirf einen Blick darauf.

Gruß Patrick

Hallo Ralph!

Unter http://www.ontek.com/mikey/optimization.html findest du ein längeres Dokument mit dem Titel „Optimization of Computer Programs in C“, wirf mal einen Blick darauf, vielleicht hilft es dir weiter.

Grüße, Robert