选择嵌入式语言

时间:2010-01-20 18:04:50

标签: c++ python perl performance lua

我正在制作一个应用程序,它使用几种不同的算法(代理)分析一个或多个数据系列。我认为这些代理中的每一个都可以作为单独的Python脚本实现,我在我的应用程序中使用Python C API或Boost.Python运行。

我有点担心运行时开销TBH,因为我正在做一些相当重的数据处理,我不想每次模拟都要等几分钟。我通常会制作数十万甚至数百万的迭代,其中我调用外部“代理”;我是否更好地硬编码应用程序中的所有内容,或者性能下降是否可以容忍?

此外,除了Python之外,还有其他可以使用的解释语言吗?

7 个答案:

答案 0 :(得分:10)

答案 1 :(得分:9)

Lua非常快。如果您需要更快的速度,请尝试LuaJIT,这非常棒。

答案 2 :(得分:5)

Tcl从一开始就被设计为嵌入式语言。

答案 3 :(得分:3)

  

我通常会制作数十万甚至数百万的迭代,我会调用外部“代理”

性能下降将是显而易见的,也许是痛苦的。如果您可以将数据放入数组并使用NumPy批量处理它,那么它应该更快。

NumPy让你可以非常轻松地连续进行一百万次算术运算。例如,平方数组的每个元素都是这样的:

>>> x = numpy.array([1, 2, 3, 4, 5, 6, 7])
>>> x**2
array([1, 4, 9, 16, 25, 36, 49])

超级简单,这里的紧密内循环实际上是用C实现的。

当然NumPy也可以进行更高级的数字运算。

答案 4 :(得分:2)

我相信tclRexx都是为了这个目的。

答案 5 :(得分:1)

对于数以百万计的调用(从我假设c ++,因为你提到了提升)到python中,是的:你会发现性能受到影响。这可能是也可能不是很重要 - 尝试新的“代理人”的速度增益可能大于命中率。 Python确实有快速的数值库(比如numpy)可能会有所帮助,但是你仍然会产生编组数据,调用python,gil等的开销。

是的,您可以嵌入许多其他语言:查看lua。另外,请查看swig.org,它可以连接除python之外的许多其他语言。

答案 6 :(得分:0)

您可以使用C ++模板和运算符重载创建嵌入式语言,例如参见ublas或ftensor矩阵语言。我不认为python或其他解释语言适合进行数字处理/数据处理。