Proyecto

General

Perfil

Acciones

Warnings » Histórico » Revisión 2

« Anterior | Revisión 2/7 (diferencias) | Siguiente »
Federico Vera, 2018-07-12 06:02


Warnings

Checking for errors

Variable naming

Avoid variables and functions with the same name as build-in functions, constant or operators (or even custom functions). Even though this is possible and permitted by this version of exp4j we intent to create a more strict version in the future.

Why is this bad? well... if we have a built-in function called sin(x) and create a second function called sin(x, y) and use a variable called sin you might end up with expressions like: sin(sin(sin, sin(sin)) + sin) this may sound dumb, but unfortunately is very common.

Performance

Multiple calls to Expression#evaluate()

This is a common mistake, values returned from Expression#evaluate() are not cached, so every call will reevaluate the entire expression. There are two options:

  1. Save the value of Expression#evaluate() instead of calling it multiple times
  2. Implement the result cache! Checkout #15 for some details

Simplifier enabled for single evaluation

The simplifier needs to do a full evaluation of the code in order to make the simplifications, so it should not be enabled for single evaluation, since this will create a 100% loss in performance (the expression needs to be evaluated twice).

Write simplifiable expressions

Even though you can use the Expression#toString() method to checkout the number of tokens, the rule of thumb is to sort the expression:

For instance the expression 2 + 3x - 1 is not simplifiable, because the Simplifier does not alter the order of the operators (Operators can be overridden and there's no way of handling those scenarios).
If you change 2 + 3x - 1 to 2 - 1 + 3x it will be simplified to 1 + 3x.

Tags:

Actualizado por Federico Vera hace más de 5 años · 2 revisiones

Volver al inicio