Gleitkomma-Präzision (fp: präzise vs. fp: schnell)


10

Macht die Compiler-Option der Gleitkommapräzision in C oder C ++ wirklich einen Unterschied in realen Spielen (Small / Indie)?

Nach meinen Beobachtungen ist die Einstellung von fp: fast um ein Vielfaches schneller als die von fp: präzise und nach meinem Verständnis ( /programming/6889522/fpfast-vs-fpprecise-what-kind-of-errors-can) -i-Begegnung ) Der Genauigkeitsunterschied zwischen den beiden Compileroptionen ändert sich nur ab der 16. Stelle einer Gleitkommazahl.

Hat jemand ein Beispiel für die Verwendung von fp gefunden: Fast ist bei 2D- oder 3D-Spielen furchtbar schief gelaufen?

Bearbeiten: Zur Verdeutlichung frage ich nicht nach der Genauigkeit der Gleitkommawerte selbst (dh float vs double vs decimal). Nur über die Genauigkeit in Bezug auf die Compiler-Option.

Antworten:


11

Ihre Interpretation von fp: fast vs fp: präzise klingt verdächtig; Ich bin sicher, es gibt mehr Effekte als nur Rundungsfehler nach der 16. Dezimalstelle. Ich verweise Sie auf Bruce Dawsons Artikel über Gleitkommapräzision für weitere Details.

Im Allgemeinen ist ein Gleitkomma-Präzisionsfehler definitiv ein echtes Problem bei der Spieleentwicklung. Dies ist besonders problematisch für Physikprogrammierer und für Spiele mit großen Welten oder langen Laufzeiten (in der Größenordnung von Wochen oder Monaten, wie bei einem MMO). Gleitkomma-Präzisionsfehler manifestieren sich meist als Simulationsinstabilität und nervöse Bewegung, die sich mit der Zeit allmählich verschlechtern. Wenn Sie diese Art von Artefakten in Ihrem Spiel nicht sehen und die Leistungssteigerung erheblich ist, sollte es auf jeden Fall sicher sein, bei fp: fast zu bleiben.


1
-1 Die Gleitkommapräzision ist kein großes Problem bei der Spieleentwicklung. Die Auswahl falscher Datentypen und mangelnder numerischer Kenntnisse und Algorithmen ist die Ursache für alle in diesem Beitrag genannten Probleme. Alle Projekte, an denen ich teilgenommen habe, verwendeten fp: fast ohne eines der genannten Probleme.
Maik Semder

Ja, unsere Schlussfolgerungen sind dieselben. Mein Punkt war, dass Gleitkommapräzision in bestimmten Bereichen der Spieleentwicklung ein Problem sein kann , und deshalb benötigen Sie (in diesen Bereichen) das von Ihnen erwähnte numerische Wissen und die richtigen Datentypen.
Postgoodism

+1 für beide tollen Links und für die Antwort, die Sie Maik Semder gegeben haben. Ich habe auch Leute gesehen, die mit solchen Fehlern zu kämpfen haben, einfach weil sie nicht wissen, welche Art von Operationen sie in ihren Codes verwenden sollen.
Ali1S232

@postgoodism Danke für die Antwort. Ihre Eingabe nicht ignorieren. Warten Sie vielleicht noch ein oder zwei Tage, um zu sehen, ob ich weitere Antworten bekomme.
Inisheer

@MaikSemder Grundsätzlich nur verwenden fp:fast, es sei denn, Sie möchten das wirklich, fp:precisewenn Sie verschiedene seltsame Probleme bemerken (könnte bei komplexen Berechnungen in Spielen wie Physik wie @postgoodism gesagt werden). Danke, habe mich darüber gewundert.
Nikos
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.