Advertencias » Histórico » Revisión 1
Revisión 1/3
| Siguiente »
Federico Vera, 2018-07-12 17:23
Advertencias¶
- Índice de contenidos
- Advertencias
- Encontrando errores
- Nombres de Variables
- Rendimiento
Encontrando errores¶
Nombres de Variables¶
Deben evitarse nombres de variables y funciones que tengan el mismo nombre que las funciones, constantes u operadores. En la versión actual de exp4j
esto está permitido (va a cambiar en el futuro).
¿Por qué es malo? bueno... si tenemos una función incorporada llamada sin(x)
y creamos una segunda función llamada sin(x, y)
y además utilizamos una variable llamada sin
pueden generarse expresiones como: sin(sin(sin, sin(sin)) + sin)
puede parecer tonto, pero lamentablemente es algo bastante más común de lo que parece.
Rendimiento¶
Múltiples llamadas a Expression#evaluate()
Este es un error muy común. Los valores devueltos por Expression#evaluate()
no se cachean, por lo tanto cada llamado reevalúa la expresión completa. Hay dos opciones:
- Guardar el valores de
Expression#evaluate()
en lugar de llamar a la función una y otra vez. - ¡Implementar un cache de resultados! Ver #752 para más detalles
Activar el simplificador para una única evaluación¶
El simplificador tiene que hacer una ejecución completa para poder realizar su trabajo, por lo tanto no debe utilizarse para una sola evaluación dado que esto crearía una pérdida del 100% en el rendimiento (la expresión debe evaluarse dos veces).
Escribir expresiones simplificables¶
Por ejemplo la expresión 2 + 3x - 1
no es simplificable, porque el Simplificador
no altera el orden de los operandos (Como los operadores pueden ser sobrecargados no hay una forma fácil de hacer esto).
Si en cambio se cambia 2 + 3x - 1
a 2 - 1 + 3x
será simplificado a 1 + 3x
.
Actualizado por Federico Vera hace más de 6 años · 1 revisiones
Volver al inicio