-1

我正在为Windows 手机制作一个函数图形应用程序,用户可以在其中输入一个函数供应用程序绘制。我需要一个快速(这里我的意思是尽可能快的)表达式评估器。我见过很多数学解析器,但似乎没有一个允许单独编译和评估。我需要这个,因为我需要以30 甚至更好的 60fps计算大量数据点(1000+)。我发现的所有这些都接受一个字符串并同时解析它+评估。由于我正在为 windows phone 制作这个,由于限制,我无法直接编译 c# 代码。

它应该能够执行以下操作: 2^2*sin(x/20)+abs(x)/log(x, 2)

解决了:

我真的很生自己的气,因为我无法用谷歌搜索,最后当我在这里提问时,我自己找到了答案。

这成功了:

http://nicoschertler.wordpress.com/2011/09/22/math-parser-using-lambda-expressions/

1.5ghz 双核手机可以在 60fps 下以 1/4 像素精度运行它!

4

1 回答 1

0

很奇怪,因为有相当多的解析器生成器,它们反过来让您可以使用解析器。如果您在解析时定义评估,或者只是为以后的评估构建一个数学表达式,这取决于您。

通用解析器生成器的一个缺点是,它是通用的,所以它做的比你要求的要多。另一方面,当需要时添加一些东西很容易(我不敢碰你链接的代码中的任何东西)。

我自己的框架(即解析器生成器)包含两种形式的非常简单的计算器(因此它进行数学表达式解析)——用 C# 代码编写(慢)并生成到动作表(快——当然它可能更快)。

http://sourceforge.net/projects/naivelangtools/

于 2013-10-21T16:01:30.577 回答