Dauer eine Division mit Kommazahl

(Firma: Druckerei Beste) #857074
Lesenswert?

Ich kenne den Prozessor nicht. Wenn er Hardware für die Division hat, 
dann steht das im Datenblatt. Wenn nicht, dann musst du die 
Ausführungszeit des entsprechenden Code ausrecchnen.

Alternativ kannst du messen. Du nimmst eine Reihe von vershiedenen 
Zahlen, lässt sie durch 1.002 teilen misst die Ausführungszeit und 
teilst durch die Anzahl der Zahlen.

Falls du es gerne schnell hättest, dann solltest du mit (1 / 1.002) 
multiplizieren. Geht meistens schneller.

virtuPIC
Gast #857075
Lesenswert?

Da gibt es mehrere Möglichkeiten:

- Im erzeugten Assemblercode die Zyklen zählen,
- vom Simulator die Zyklen zählen lassen,
- auf realem AVR die Zyklen vom Bit-Timer/Counter zählen lassen oder
- auf realem AVR die Zeit für bspw. 100000 Divisionen mit der Stoppuhr
  messen.

Wenn es auf Geschwindigkeit ankommt, würde ich aber nicht durch 1.002
dividieren, sondern mit 1/1.002 multiplizieren.
Gast #857309
Lesenswert?

>wie kann man ausrechnen bzw. schätzen, wie lange eine Division von eine
>Double Zahl durch 1.002 mit 16MHz Atmega dauern würde?

Indem du das Programm schreibst und mit AVR Studio simulierst und die 
Anzahl der Takte abliest, fertig.
Gast #857314
Lesenswert?

> 1/1.002 ist im Übrigen in Ganzzahlarith. 1, hilft also nix, der HW
> Multiplier.

Wenn man (nur ein wirklich kleines Stück) weiter  denkt, dann geht das 
sehr wohl: Man shiftet die zu Zahlen einfach ein bisschen nach links, so 
dass dann beispielsweise die 6 LSB Nachkommastellen darstellen.

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