选择嵌入式语言
我正在开发一个应用程序,使用多种不同的算法(代理)分析一个或多个系列的数据。我想到每个代理都可以作为单独的 Python 脚本实现,用 Python C API 或 Boost.Python 在我的应用程序中运行。
老实说,我有点担心运行时的开销,因为我正在进行一些相当重型的数据处理,我不想等几分钟才能完成每个模拟。在我调用外部“代理”的数十万甚至几百万次迭代中,我通常会制作成千上万个迭代;我是硬编码在应用程序中,还是性能降低可以容忍呢?
还有,除了 Python,我还能使用哪些其他解释性语言?
原文链接 https://stackoverflow.com/questions/2103728
对于从 C++(我假设您使用了 Boost)调用 Python 的数百万次调用,是的:您会注意到性能下降。这可能很重要,也可能不重要 - 也许尝试新的“代理”所获得的速度增益将比损失更大。Python确实拥有快速的数字库(例如numpy),这可能有所帮助,但您仍将遭受数据编组,调用Python,GIL等开销。
是的,您可以嵌入许多其他语言:请查看lua。此外,请查看swig.org,它可以连接到除Python之外的许多其他语言。
是的,有很多种。Lua 和 Python 似乎是最受欢迎的:
嵌入 Lua
- http://www.lua.org/pil/24.html
- https://stackoverflow.com/questions/38338/why-is-lua-considered-a-game-language
- Lua 作为通用脚本语言?
嵌入 Python
嵌入 Tcl
嵌入 Ruby
嵌入 Perl
嵌入 JavaScript
有很多 JavaScript 引擎,这只是其中的一个例子。其中有一些引擎也非常快。
我通常会进行成千上万,如果不是数百万次迭代,其中会调用外部“代理”。
性能下降会很明显,也许会很痛苦。如果您可以将数据放入数组中,并使用 [NumPy](https://numpy.org/)批处理进行处理,速度应该会更快。
NumPy使得连续进行任何类型的算术操作变得非常简单,例如,对数组中的每个元素进行平方操作可以这样实现:
>>> x = numpy.array([1, 2, 3, 4, 5, 6, 7])
>>> x ** 2
array([1, 4, 9, 16, 25, 36, 49])
非常容易,而且 这里的紧密内部循环实际上是用C实现的。
当然,NumPy还可以进行更高级的数值计算。
Tcl
从一开始就被设计为嵌入式语言。
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
你可能可以使用 C++ 模板和运算符重载创建一个内嵌语言,例如可以看看 ublas 或 ftensor 矩阵语言。我认为 Python 或其他解释语言不适合进行大量数值计算或数据处理。