Zeitdauer einer Muliplikation

Persönliche Seite #1773179
Lesenswert?
• ▲
▼
Beispielsweise in dem du die Zeit misst.

Zum Messen der Zeit kannst du ein Oszilloskop benutzen. Zum Triggern des 
Oszilloskops schaltest du vor der Berechnung einen Ausgangspin und nach 
der Berechnung wieder. Den Signalverlauf in der Zeitdomäne kannst du auf 
dem Oszilloskop ausmessen. Wenn du kein Speicheroszilloskop sondern nur 
ein normales Oszi hast, dann musst du diesen Vorgang zyklisch 
wiederholen.

Eine weitere Möglichkeit z.B. bei AVRs ist das "Messen" im AVR 
Simulator. Breakpoint vor und nach die Berechnung. Beim Vor-BP die 
Stopwatch resetten und beim Nach-BP ablesen.
Gast #1773617
Lesenswert?
• ▲
▼
Hallo,

wie schon gesagt, messen - aber du musst dir drüber klar sein, dass man 
die Frage so nicht stellen kann, weil die Rechenzeit allgemein stark von 
den tatsächlichen Zahlenwerten abhängig ist. 2 x 2 geht eben schneller 
als 2 6 stellige Zahlen multiplizieren. Die Frage kann also nur heissen, 
was ist der worst case bei den aktuell vorkommenden Zahlenwerten.

Da die Antwort also bei jedem Einsatz eine andere ist, ist es 
folgerichtig, dass darüber keine allgemeinen Werte verfügbar sind. Ein 
worst case Wert für den gesamten möglichen Zahlenbereich wäre viel zu 
pessimistisch und daher in der Praxis wertlos.

Selber messen macht kluch.

Gruss Reinhard
#1773661
Lesenswert?
• ▲
▼
Reinhard Kern schrieb:
> weil die Rechenzeit allgemein stark von
> den tatsächlichen Zahlenwerten abhängig ist. 2 x 2 geht eben schneller
> als 2 6 stellige Zahlen multiplizieren.

Auf den meisten Architekturen mit Hardwaremultiplikation ist heute die 
Dauer der Multiplikation nicht vom Wert der Operanden abhängig, 
solange die Operanden noch in die Wortbreite der CPU passen. Ausnahme: 
Multiplikation mit Konstanten, wenn der Compiler/Optimizer diese dann 
durch andere Operationen (z.B. Shift bei Zweierpotenzen) ersetzt.

Selbst bis zur doppelten Wortbreite dürfte es häufig noch schneller (und 
vor allem einfacher) sein, pauschal immer die volle Multiplikation 
durchzuführen (damit Dauer auch wieder unabhängig von den konkreten 
Werten), als vorher durch Vergleiche festzustellen, ob man vielleicht 
bei den gegebenen Operanden gerade nur die untere Hälfte berechnen muss.

Andreas
#1773886
Lesenswert?
• ▲
▼
Die extremste Form dieser Strategie findet man bei Microchip-Compiler 
für PIC30 und Nachfahren und deren single cycle multiplier. Der setzt 
ein "long" im Registerpaar auf 0, indem er es mit 0 multipliziert. Ist 
der schnellste Weg.

Stromsparstrategen besonders der nachfolgenden Chipgenerationen 
(PIC24/33) dürften ihre Kollegen von der Compiler-Fraktion dafür 
allerdings verfluchen.
Gast #1773965
Lesenswert?
• ▲
▼
A. K. schrieb:
> Die extremste Form dieser Strategie findet man bei Microchip-Compiler
> für PIC30 und Nachfahren und deren single cycle multiplier. Der setzt
> ein "long" im Registerpaar auf 0, indem er es mit 0 multipliziert. Ist
> der schnellste Weg.

Mh, ich dachte ein xor mit sich selbst wäre schneller
Gast #1774998
Lesenswert?
• ▲
▼
Andreas Ferber schrieb:
> Auf den meisten Architekturen mit Hardwaremultiplikation ist heute die
> Dauer der Multiplikation nicht vom Wert der Operanden abhängig,
> solange die Operanden noch in die Wortbreite der CPU passen.

Hallo Andreas,

sicher, er hat aber auch nach Wurzelziehen gefragt. Ich meinte das ganz 
allgemein für Gleitkommaberechnungen.

Gruss Reinhard

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.