Precisión de punto flotante (fp: preciso frente a fp: rápido)

10

En C o C ++, ¿la opción del compilador de precisión de punto flotante realmente marca la diferencia en los juegos del mundo real (pequeños / independientes)?

Según mis observaciones, establecer fp: fast es muchas veces más rápido que fp: preciso y por lo que entiendo aquí ( /programming/6889522/fpfast-vs-fpprecise-what-kind-of-errors-can -i-encuentro ) la diferencia de precisión entre las dos opciones del compilador solo cambia desde el décimo sexto dígito de un número de coma flotante.

¿Alguien ha encontrado un ejemplo al usar fp: fast salió terriblemente mal para juegos 2D o 3D?

Editar: Para aclarar, no estoy preguntando acerca de la precisión de los valores de coma flotante (es decir, flotante vs doble vs decimal). Solo acerca de la precisión relacionada con la opción del compilador.

Inisheer
fuente

Respuestas:

11

Su interpretación de fp: fast vs fp: precisa suena sospechoso; Estoy seguro de que hay más de un efecto que solo un error de redondeo después del decimosexto lugar decimal. Me remito al artículo de Bruce Dawson sobre precisión de coma flotante para más detalles.

En general, el error de precisión de punto flotante es definitivamente un problema real en el desarrollo del juego. Es especialmente problemático para los programadores de física y para juegos con mundos grandes o tiempos de ejecución largos (del orden de semanas o meses, como un MMO). Los errores de precisión de punto flotante se manifiestan con mayor frecuencia como la inestabilidad de la simulación y el movimiento nervioso que empeora gradualmente con el tiempo. Si no estás viendo ese tipo de artefactos en tu juego, y el aumento del rendimiento es significativo, entonces definitivamente debería ser seguro seguir con fp: rápido.

posgoodismo
fuente
1
-1 La precisión de punto flotante no es un problema importante en el desarrollo del juego. Elegir los tipos de datos incorrectos y la falta de conocimiento numérico y algoritmos es la causa de todos los problemas mencionados en esta publicación. Todos los proyectos en los que participé utilizaron fp: fast sin ninguno de los problemas mencionados.
Maik Semder
Sí, nuestras conclusiones son las mismas. Mi punto era que la precisión de coma flotante puede ser un problema en ciertas áreas del desarrollo del juego, y es por eso que (en esas áreas) necesitas el conocimiento numérico y los tipos de datos adecuados que mencionaste.
postgoodismo
+1 tanto para el enlace genial como para la respuesta que le diste a maik semder. También he visto personas que luchan con ese tipo de errores, simplemente porque no saben qué tipo de operaciones deberían usar en sus códigos.
Ali1S232
@postgoodism Gracias por responder. Sin ignorar su aporte. Solo puedo esperar otro día o dos para ver si obtengo más respuestas.
Inisheer
@MaikSemder Básicamente, utilícelo fp:fastentonces, a menos que realmente quiera el fp:precisesi nota varios problemas extraños (podría notarse en cálculos complejos en juegos, como la física como dijo @postgoodism). Gracias, me preguntaba sobre esto.
Nikos