Advertencias » History » Version 1
Federico Vera, 2018-07-12 17:23
| 1 | 1 | Federico Vera | # Advertencias |
|---|---|---|---|
| 2 | |||
| 3 | {{>toc}} |
||
| 4 | |||
| 5 | # Encontrando errores |
||
| 6 | # Nombres de Variables |
||
| 7 | 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). |
||
| 8 | |||
| 9 | ¿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. |
||
| 10 | |||
| 11 | # Rendimiento |
||
| 12 | |||
| 13 | ## Múltiples llamadas a `Expression#evaluate()` |
||
| 14 | 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: |
||
| 15 | 1. Guardar el valores de `Expression#evaluate()` en lugar de llamar a la función una y otra vez. |
||
| 16 | 1. ¡Implementar un cache de resultados! Ver #752 para más detalles |
||
| 17 | |||
| 18 | ## Activar el simplificador para una única evaluación |
||
| 19 | |||
| 20 | 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). |
||
| 21 | ## Escribir expresiones simplificables |
||
| 22 | |||
| 23 | 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). |
||
| 24 | Si en cambio se cambia `2 + 3x - 1` a `2 - 1 + 3x` será simplificado a `1 + 3x`. |