Letztes Semester mussten wir einen Raytracer für einen Kurs in der Schule entwickeln. Nachdem die Schule fertig war, versuchte ich ein bisschen damit herumzubasteln.Java Raytracing Float vs Doppel
Ich wollte sehen, was sich ändern würde, wenn ich alle Gleitkommaberechnungen von Double in Float ändern würde (alle Berechnungen werden mit Double durchgeführt). Also habe ich jede Variable in type float geändert und gebe einfach jedes double, das von den Math-Methoden zurückgegeben wird, in float um. Das Testen meines Raytracers an einigen Szenen zeigte eine ziemlich anständige Leistungssteigerung.
Suchen im Web Ich fand verschiedene Gründe, warum float könnte schneller sein, aber auch einige sagen, dass doppelt so schnell sein kann, oder noch schneller in einer 64-Bit-Umgebung. Die Sache ist, ich laufe in einer 64-Bit-Umgebung und JVM. Was wäre der Grund für diese erhöhte Leistung?
Jetzt lese ich das PBRT-Buch und plane, einen Raytracer von Grund auf neu zu schreiben. Würde das Floaten für alle Gleitkommaberechnungen Probleme bereiten? Ich habe bei meinen Tests keine bemerkt, aber vielleicht für bestimmte Szenen die geringere Präzision (Kreuzungstest scheint dort zu sein, wo es ein mögliches Problem darstellen könnte)? Oder vielleicht ein Kompromiss, wie Doppel für die kritischen Tests und float für weniger kritische Berechnungen? Ich müsste eine andere Math-Bibliothek verwenden, um das Casting loszuwerden, würde ich den Floating-Weg gehen.
Ich glaube 'double d = 1d' ist zwei Anweisungen, während' float f = 1f' eins ist. Sogar auf 64-Bit-Maschinen. Verwirren Sie mit einer 64bit JVM. – jn1kk
"Ich bin in einer 64-Bit-Umgebung ausgeführt" Ein 64-Bit-Betriebssystem zählt nicht als 64-Bit-Umgebung. Ihr Compiler und andere Tools (wie eine JVM, wenn Sie Java ausführen) müssen ebenfalls 64-Bit sein. –
mögliches Duplikat von [Ist float langsamer als double? Läuft 64-Bit-Programm schneller als 32-Bit-Programm?] (Http://stackoverflow.com/questions/5738448/is-float-slower-than-double-does-64-bit-program-run-faster-than-32 -Bit-Programm) –