G'n Abend, ich bin auf der Suche nach einer Gegenüberstellung von Laufzeiten einiger Instruktionen durchgeführt mit integer und float Variablen. z.B: Division zweier Integer-Variablen 1ns Division zweier Float-Variablen 18ns Wenn dann noch long, double etc. dabei wären, wäre das natürlich spitze. Weiß jemand wo ich sowas herbekomme? Ich suche mit seit eienr halben Stunden die DSL-Leitung heiß ;o) Auf welchen µC sich die Messugnen beziehen ist mir prinzipiell egal. Schönen Gruß Hans
>Auf welchen µC sich die Messugnen beziehen ist mir prinzipiell egal
Da das ganze von sehr viele Parameter abhängt, wirst du auch nichts
finden.
Der Compieler hat einfluss darauf, der Prozessortyp, die Taktfrequenz,
die Optimierung und bestimmt noch einige dinge mehr.
Kanst dir also auch werte ausdenken, der Praktische nutzen wird der
gleiche sein.
Ausprobieren... Maschine: MIPS R10000, 250MHz. Angaben in Nanosekunden.
1 | int float double |
2 | a++ 8 8 8 |
3 | a = b + c 12 12 12 |
4 | a = b - c 12 12 12 |
5 | a = b * c 12 11 11 |
6 | a = b / c 114 28 58 |
7 | a = b % c 114 |
8 | |
9 | |
10 | float f, f1, f2; |
11 | int i; |
12 | |
13 | i = f 8 |
14 | f = i 8 |
15 | |
16 | i = rand() 135 |
17 | f1 = log(f2) 418 |
18 | f1 = exp(f2) 462 |
19 | f1 = sin(f2) 514 |
20 | f1 = sqrt(f2) 112 |
Quelle: The Practice of Programming, Kernighan, Pike.
Ich würde an deiner Stelle einige Instruktionen in C schreiben, mit WINAVR compilieren und im Assembercode die Instruktionen anschauen und mit den im Datenblatt angegebenen Taktzyklen ausrechnen, wie lange das dauert. Das bezieht sich dann auf die ATMega Serie von Atmel und das Ergebnis sind Takte pro Funktionsaufruf. Wenn du wissen willst, wie lange das im realen System dauert, musst du zusätzlich die Taktfrequenz des Controllers wissen. Grüße, Peter
ich hab hier mal ein paar AN's von Atmel gefunden: http://www.atmel.com/dyn/resources/prod_documents/DOC1973.PDF http://www.atmel.com/dyn/resources/prod_documents/doc0936.pdf im Allgememeinen dauern Divisionen SEHR lange. Und mit der Komplexität des Datentyps steigt die Komplexität. Man sollte deshalb auf Divisionen (und Multiplikationen) soweit wie möglich verzichten, bzw. hierzu eine 2er-Potenz verwenden, da dann nur geshiftet werden muss. Gruß Roland
Hans Riegel wrote: > G'n Abend, > > ich bin auf der Suche nach einer Gegenüberstellung von Laufzeiten > einiger Instruktionen durchgeführt mit integer und float Variablen. > > z.B: > Division zweier Integer-Variablen 1ns > Division zweier Float-Variablen 18ns > > Wenn dann noch long, double etc. dabei wären, wäre das natürlich spitze. > Weiß jemand wo ich sowas herbekomme? Ich suche mit seit eienr halben > Stunden die DSL-Leitung heiß ;o) Klassische 680x0 http://www.freescale.com/files/32bit/doc/ref_manual/MC68040UM.pdf (insb. die FPU-Timings) http://www.freescale.com/files/32bit/doc/ref_manual/MC68060UM.pdf Aktueller SH-4 von Renesas http://documentation.renesas.com/eng/products/mpumcu/rej09b0318_sh_4sm.pdf > Auf welchen µC sich die Messugnen beziehen ist mir prinzipiell egal. > > Schönen Gruß > > Hans
Hans Riegel wrote:
> Auf welchen µC sich die Messugnen beziehen ist mir prinzipiell egal.
Dann dürften Deine Zahlen ebenso aussagekräftig sein, wie ein Vergleich
zwischen Rollator und Concorde.
Peter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.