sinonimos - ¿Cómo se manejan las carrozas desnormalizadas en C#?
normalizacion de bases de datos ejemplos (1)
No hay tal opción.
La palabra de control FPU en una aplicación C # es inicializada por el CLR al inicio. Cambiarlo no es una opción proporcionada por el marco. Incluso si intenta cambiar pinvoking _control87_2() entonces no va a durar mucho tiempo; cualquier excepción hará que la palabra de control se restablezca nuevamente mediante la implementación de manejo de excepciones dentro del CLR. Que fue escrito para tratar con otro aspecto de la palabra de control FPU, permite desenmascarar excepciones de punto flotante. También será perjudicial para cualquier otro código administrado que no espere que se cambie el estado global de esa manera.
No tener control directo sobre el hardware es una restricción implícita cuando se ejecuta código en una máquina virtual. No es que esto sea fácil de hacer en el código nativo, las bibliotecas tienden a portarse mal cuando también esperan que la FPU tenga la inicialización predeterminada. Particularmente un problema con los indicadores de enmascaramiento de excepciones, los archivos DLL creados con herramientas de Borland tienen una habilidad especial para activar excepciones, haciendo que otro código falle y no esté escrito para lidiar con dicha excepción. Un problema extremadamente feo para resolver, la palabra de control FPU es la peor variable global posible que puedas imaginar.
Esto pone la carga sobre ti para que no dejes que tus cálculos de punto flotante se descontrolen así. El cálculo con denormales casi siempre produce resultados sin sentido, si no desde los valores radicalmente pequeños, al menos desde la pérdida rápida de dígitos significativos. Truncar valores inferiores a 2.2E-308 a 0 depende de usted. Sí, no es muy práctico. Tal vez está bien que un programa genere resultados sin sentido un poco más lento de lo normal :)
Solo lea este fascinante artículo sobre las ralentizaciones de 20x-200x que puede obtener en las CPU Intel con flotadores desnormalizados (números en coma flotante muy cerca de 0).
Hay una opción con SSE para redondear estos a 0, restaurando el rendimiento cuando se encuentran dichos valores de punto flotante.
¿Cómo manejan esto las aplicaciones C #? ¿Existe una opción para habilitar / deshabilitar _MM_FLUSH_ZERO
?