0

假设我们有一个包含一百万个元素的数组,并且我们希望接受用户输入关于将哪种数学应用于每个元素的输入。

程序是否需要为每个元素评估用户公式(字符串)一百万次。或者公式本身可以以某种方式保存和解释一次吗?然后循环应用到百万个元素?

我只是想大致了解这是如何工作的。因为现在看起来 excel 类型的程序总是被解释,这对我的数据研究来说太慢了。所以基本上我正在做的是每次我改变它时重新编译我的用户定义的数学。而且似乎没有办法编译一个程序,并在它本身运行时重新编译它。这样它就可以接受用户输入,编译并运行它,而无需退出。也许使用 DLL 和单独的应用程序域,但是所有数据都必须进行编组。

当一切都对你不利时,我只是不明白如何获得最高速度的数据研究。包括愚蠢的操作系统,出于安全考虑,不允许卸载、加载 DLL。或者其他的东西。然而,也许我只是在胡说八道,因为我几个月前才开始编程。

4

2 回答 2

0

如果您希望用户输入针对动态编译的数据集和表达式,请查看合适的C# REPL

您应该能够简单地输入您的转换等,并让 REPL 编译并应用它们。这是一种有用的工具/技术,用于在将解决方案正确编码到类/组件中之前尝试解决方案。

于 2012-12-06T10:56:31.823 回答
0

如果您有兴趣或更喜欢自己实现解决方案,您可以将公式解析为(二叉)树,其中每个节点代表一个运算符(+、-、*、..)或函数(cos() , max(),..) 并且每个叶子代表一个常数或公式的变量之一。

这可以以一种非常有效的方式完成,然后通过递归计算根的值同时在叶子处填充正确的变量来应用于整个数据集。

为了弄清楚如何最好地做到这一点,这个问题可能会提供一些指示(尽管我相当确定答案只有几种方法之一): Create Binary Tree from Mathematical Expression

希望这会有所帮助,或者至少对其他读者有一些兴趣!

于 2012-12-06T11:11:57.333 回答