Auf einer Hardware kann die Arithmetik mit Doppelwerten länger dauern als mit Einzelwerten, aber die neuesten FPUs haben einen einzigen nativen Datentyp (z. B. 80-Bit erweiterte Gleitkommawerte für x86), die intern für verwendet werden Berechnungen unabhängig davon, welchen In-Memory-Datentyp Sie verwenden. Das heißt also, dass "FPU-Berechnungen mit einfacher Genauigkeit schneller sein werden", ist im Allgemeinen kein ein Grund, Single-Precision heute auf modernster Hardware zu verwenden.
Abgesehen von den in den anderen Antworten erläuterten "weniger Speicher verwenden" -Gründen gibt es einen sehr praktischen Grund, wenn es um SIMD-Vektorbefehle wie SSE und AltiVec geht - einfache Genauigkeit ist doppelt so groß Schnell wie doppelte Genauigkeit, da die Befehle auf Vektoren mit fester Größe angewendet werden und Sie doppelt so viele Einzelpräzisionswerte in einen einzelnen Vektor eingeben können, wobei die Verarbeitungszeit typischerweise gleich bleibt. B. mit einer 128-Bit-Vektoreinheit, die Vektormultiplikationen in 2 Taktzyklen verarbeiten kann, einen Durchsatz von 2 Multiplikationen mit einfacher Genauigkeit pro Takt im Vergleich zu 1 Doppelpräzision erhalten, da Sie 4 Singles in einen Vektor einlesen können , gegen zwei Doppel.
Ein ähnlicher Effekt tritt bei der Speicherbandbreite auf und ist nicht spezifisch für Vektorverarbeitung - wenn Sie große Doppelfelder haben, nehmen sie nicht nur den doppelten Platz ein, sondern können bis zu doppelt so lange verarbeiten dass Ihr Algorithmus bandbreiteneingeschränkt ist (was angesichts der zunehmenden Größen und abnehmenden Latenzen von Vektorverarbeitungseinheiten zunehmend wahrscheinlich ist).
"Die meisten" Anwendungen. Könnte ein Problem für eingebettete Systeme sein, oder wenn Sie Millionen von Doppeln haben. – mpen
Meine Faustregel ist, normal zu verwenden, float (scheinbar Ihre Single), wenn ich einen guten Grund habe (wie Platz zu sparen). –