3 Stimmen

Geschwindigkeit von C++-Operatoren/ einfacher Mathematik

Ich arbeite an einer Physik-Engine und bin der Meinung, dass es hilfreich wäre, ein besseres Verständnis für die Geschwindigkeits- und Leistungseffekte bei der Durchführung vieler einfacher oder komplexer mathematischer Operationen zu haben.

  1. Ein großer Teil einer Physik-Engine besteht darin, unnötige Berechnungen zu eliminieren, aber Ab wann sind die Berechnungen so klein, dass eine vergleichende Prüfung nicht mehr notwendig ist?

    • z.B.: Prüfung, ob sich zwei Liniensegmente schneiden. Sollte geprüft werden, ob sie sich nahe beieinander befinden, bevor man direkt zur einfachen Berechnung übergeht, oder würde die zusätzliche Operation den Prozess auf Dauer verlangsamen?
  2. Wie viel Zeit benötigen die verschiedenen mathematischen Berechnungen?

    • z.B.: (3+8) vs (5x4) vs (log(8)) usw.
  3. Wie lange dauern die Ungleichheitskontrollen?

    • z.B.: >, <, =

0voto

Roee Gavirel Punkte 18058

Soviel ich weiß, dauern alle "Ungleichheitskontrollen" gleich lang.
Was die übrigen Berechnungen betrifft, so würde ich Ihnen raten, einige Tests durchzuführen, z. B.

  1. Zeitstempel A nehmen
  2. 1.000.000 "+"-Rechnung (oder irgendeine andere) machen.
  3. Zeitstempel B nehmen
  4. Berechnen Sie den Unterschied zwischen A und B.

dann können Sie die Berechnungen vergleichen.

im Auge behalten:

  1. die Verwendung unterschiedlicher mathematischer Bibliotheken kann sich ändern (einige mathematische Bibliotheken sind eher leistungsorientiert und andere eher präzisionsorientiert)
  2. die Compiler-Optimierung kann es ändern.
  3. jeder Prozessor macht es anders.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X