加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 根据需要组装一个功能,并快速计算

发布时间:2020-12-16 03:12:37 所属栏目:百科 来源:网络整理
导读:这里有解释型语言,比如Lisp,Tcl,Perl等,它们可以在运行期间在代码中定义一个lambda / proc / sub,并在同一个会话中进行评估. 那里有一些编译语言,比如C,它会比解释的执行得快很多,但是在运行时和编译程序之间定义一个函数并不容易,如果可能的话. 这里的问题
这里有解释型语言,比如Lisp,Tcl,Perl等,它们可以在运行期间在代码中定义一个lambda / proc / sub,并在同一个会话中进行评估.

那里有一些编译语言,比如C,它会比解释的执行得快很多,但是在运行时和编译程序之间定义一个函数并不容易,如果可能的话.

这里的问题是执行以下操作:

>在运行时定义一个函数:例如,基于初始输入数据导出数据的分析模型.
>在循环中快速执行上述函数:例如,应用导出的分析模型来分析输入数据.

我看到的一个解决方案不是很漂亮:

>基于初始输入数据,在嵌入式Tcl中导出代表分析模型的过程.
>通过评估Tcl中的一个采样点阵列的过程创建了一个查找表,乐观地说,它将涵盖适用范围.
>查找表从Tcl解释器传递回二进制(在C中开发).
>然后通过在查找表中的“足够近”的值之间进行插值来分析输入数据.

上述解决方案有效,但在概念和计算方面都有很多问题.因此,问题是:是否可以在C中定义一个函数,并使其可在相同的运行时会话中执行?

从概念上讲,是否有可能像一个字符串一样创建一个函数,在内存中进行编译,并以某种方式将其链接回正在执行的二进制文件?

解决方法

如果你想要开箱即用的东西看看 ExprTK.如果你想自己写一个表达式解析器,看看 Boost Spirit.

一个替代方法是即时创建C代码,将其编译为共享库(插件)并在运行时加载它.这可能是最快的解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读