代码之家  ›  专栏  ›  技术社区  ›  Rune Aamodt

选择嵌入式语言

  •  7
  • Rune Aamodt  · 技术社区  · 16 年前

    我正在开发一个应用程序,它使用几个不同的算法(代理)分析一个或多个数据系列。我想到,每个代理都可以作为单独的python脚本来实现,我在应用程序中使用python c api或boost.python来运行这些脚本。

    我有点担心运行时开销tbh,因为我正在做一些非常繁重的数据处理,我不想为每个模拟等几分钟。我通常会进行数十万次(如果不是数百万次)的迭代,在这些迭代中我调用外部的“代理”;我是最好将应用程序中的所有内容都硬编码,还是可以容忍性能下降?

    另外,除了python之外,我还可以使用其他解释语言吗?

    7 回复  |  直到 16 年前
        2
  •  9
  •   lhf    15 年前

    Lua速度很快。如果你需要更快的速度,试试看 LuaJIT 非常好。

        3
  •  5
  •   Bryan Oakley    16 年前

    TCL从一开始就被设计成一种嵌入式语言。

        4
  •  3
  •   Jason Orendorff Oliver    16 年前

    我通常会进行数十万次(如果不是数百万次)的迭代,在这些迭代中我调用外部的“代理”。

    性能下降会很明显,可能会很痛苦。如果可以将数据放入数组并使用 NumPy ,应该快得多。

    numpy使得连续一百万次的任何一种运算都非常容易。例如,将数组中的每个元素平方如下:

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

    非常简单,这里的紧密内环实际上是在C中实现的。

    当然,numpy也可以做更高级的数字处理。

        5
  •  2
  •   T.E.D.    16 年前

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

        6
  •  1
  •   Colin    16 年前

    对于数百万个调用(从我假设C++,因为你提到Boost)到Python,是的:你会注意到一个性能命中。这可能重要,也可能不重要——也许试用新的“代理”的速度增益会大于命中率。python确实有快速的数字库(如numpy),这可能会有所帮助,但是您仍然会产生整理数据、调用python、gil等的开销。

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

        7
  •  0
  •   Anycorn    16 年前

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