Au départ, j'ai utilisé le wrapper c # pour muparser . C'était très rapide. La seule solution plus rapide que je connaisse est exprtk . Si vous recherchez d'autres solutions, vous pouvez consulter le benchmark .
Mais dans le cas de .Net, vous pouvez utiliser le support intégré pour compiler le code au moment de l'exécution. L'idée est d'avoir un fichier source "modèle" comme par exemple une ressource intégrée où vous pouvez remplacer la formule pour l'évaluation. Ensuite, vous passez ce code source de classe préparé au compilateur.
Un modèle de base pourrait ressembler à ceci:
public class CSCodeEvaler
{
public double EvalCode()
{
return last = Convert.ToDouble(%formula%);
}
public double last = 0;
public const double pi = Math.PI;
public const double e = Math.E;
public double sin(double value) { return Math.Sin(value); }
public double cos(double value) { return Math.Cos(value); }
public double tan(double value) { return Math.Tan(value); }
...
Notez la% formule% dans laquelle l'expression sera insérée.
Pour compiler, utilisez la classe CSharpCodeProvider. Je ne veux pas mettre ici la source complète. Mais cette réponse pourrait aider:
Après avoir chargé l'assembly en mémoire, vous pouvez créer une instance de votre classe et appeler EvalCode.