Estoy escribiendo una aplicación que se traduce en fórmulas en código ejecutable. He estado experimentando con bastante obvio optimizaciones tales como factoring (reducir el número de multiplicaciones) con el fin de hacer que el código se ejecute más rápido. Puede alguien sugerir cualquier otra relacionada con el rendimiento de las optimizaciones que se podría realizar cuando la traducción de fórmulas de código? Gracias.
Respuestas
¿Demasiados anuncios?El código
double x = a / b + c / d;
normalmente lleva el doble de tiempo de ejecución como el equivalente de la expresión
double x = (a * d + b * c) / (b * d);
debido a la división de punto flotante es muy lenta mientras que la adición y la multiplicación son rápidos.
Así como que hay cosas obvias que hacer como pre-computación en valores constantes, y la sustitución de
double x = a + 0.0; double y = b * 1.0; double z = c / 1.0;
con las expresiones equivalentes
double x = a; double y = b; double z = c;
Esto no es tan absurdo como pueda parecer: las constantes 1.0
y 0.0
podría no ser los valores originalmente escrito, sino más bien los resultados de algunos intermedios de computación.
También se podría optimizar pow(x, 2)
a x * x
y similares, aunque ninguna decente compilador debe hacer esto para usted.