Vergleich Typischer Laufzeiten von Instruktionen

Gast #1234142
Lesenswert?

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
Gast #1234146
Lesenswert?

>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.
Gast #1234152
Lesenswert?

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.
Persönliche Seite #1234155
Lesenswert?

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
Gast #1234157
Lesenswert?

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
#1234342
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren