Gründe für die Verwendung von float statt double



  • hustbaer schrieb:

    Es (float verwenden) ist auf gängigen Maschinen soweit ich weiss gleich schnell oder sogar langsamer.

    THX



  • hustbaer schrieb:

    Es (float verwenden) ist auf gängigen Maschinen soweit ich weiss gleich schnell oder sogar langsamer.

    Die meisten Architekturen haben mittlerweile SIMD Einheiten, und bei denen ist float deutlich schneller, da mehr Daten gleichzeitig abgearbeitet werrden können. Inbesondere trifft dies auf GPGPUs zu, aber auch x86 mit den diversen SSE Einheiten erfüllt das.



  • geringerer speichervebrauch, ausreichende genauigkeit



  • Kommt auf die Plattform an und auf die Datenmenge. Es gibt (wenn der Code darauf laufen soll) Plattformen, die haben keine FPU o.ä. Da werden Fließkommazahlen per Software emuliert (bei ARM CPUs z.B. über den FPEmulator).

    Wenn float ausreicht, würde ich nicht double nutzen. Du benutzt ja auch nicht long, wenn int ausreicht.



  • Artchi schrieb:

    Wenn float ausreicht, würde ich nicht double nutzen. Du benutzt ja auch nicht long, wenn int ausreicht.

    das wäre der nächste punkt. wieso sollte man nicht einfach immer long nutzen wenn es gleich schnell ist wie int...


  • Mod

    ~john schrieb:

    Inbesondere trifft dies auf GPGPUs zu, aber auch x86 mit den diversen SSE Einheiten erfüllt das.

    Nein! Das trifft insbesondere nicht auf GPUs zu. Auf handelsüblichen GPUs ist float deutlich schneller, weil double emuliert werden muss.



  • Sagt er doch!

    ~john schrieb:

    bei denen ist float deutlich schneller, [...]. Inbesondere trifft dies auf GPGPUs zu, aber auch x86 mit den diversen SSE Einheiten erfüllt das.



  • Für GPUs gibt es sogar manchmal half mit halber Genauigkeit: http://en.wikipedia.org/wiki/Half_precision_floating-point_format



  • In einen Projekt bin ich von float nach double zurück.

    Problem war das zwar die Funktionen bei mir alle richtig gerechnet haben (so weit das mit Gleitkommazahlen funktioniert),
    aber im Zusammenspiel der Funktionen die Ungenauigkeiten sich Aufgeschaukelt haben, zwar passierte das nur in 0,1% der Fälle aber man hat es mitbekommen.

    Bin eh zur der Meinung gekommen das eine Sauberes und Leserliches Desigen mehr bringt als die Frage ob float oder double Schneller ist.
    (Muss mich selber öffters zwingen, meine "Genialen Optimierungen", nicht zu machen, die sind zwar gut für das Ego, aber sind meistens Überflüssig und machen nur den Code unleserlich.

    Lichtlein



  • ~john schrieb:

    hustbaer schrieb:

    Es (float verwenden) ist auf gängigen Maschinen soweit ich weiss gleich schnell oder sogar langsamer.

    Die meisten Architekturen haben mittlerweile SIMD Einheiten, und bei denen ist float deutlich schneller, da mehr Daten gleichzeitig abgearbeitet werrden können. Inbesondere trifft dies auf GPGPUs zu, aber auch x86 mit den diversen SSE Einheiten erfüllt das.

    Hm.
    Danke für die Korrektur. An die SSE etc. hatte ich wieder mal nicht gedacht 😞

    Dabei könnte man annehmen dass man sich nach über 10 Jahren mal an den Gedanken gewöhnt hätte dass es da was neues gibt *g*.


Anmelden zum Antworten