Выбор встроенного языка

Я делаю приложение, которое анализирует одну или несколько серий данных, используя несколько разных алгоритмов (агентов). Я пришел к мысли, что каждый из этих агентов может быть реализован в виде отдельных скриптов Python, которые я запускаю с использованием API Python C или Boost.Python в своем приложении.

Я немного беспокоюсь о превышении времени выполнения TBH, поскольку я занимаюсь обработкой данных с большой нагрузкой, и я не хочу ждать несколько минут для каждой симуляции. Я, как правило, делаю сотни тысяч, если не миллионы, итераций, в которых я вызываю внешних «агентов»; я лучше всего жестко кодировать все в приложении, или падение производительности будет приемлемым?

Кроме того, есть ли другие интерпретируемые языки, которые я могу использовать, кроме Python?

7 Solutions collect form web for “Выбор встроенного языка”

Да, тонн. Lua и Python, кажется, самые популярные:

Вложение Lua

Вложение Python

Вложение Tcl

Вложение Ruby

  • Как вставить Ruby в C ++?

Вставить Perl

Встроить JavaScript

Это десятки движков JavaScript, это просто пример. Некоторые из них также пугающе быстры.

Lua довольно быстр, как есть. Если вам нужна более высокая скорость, попробуйте LuaJIT , что отлично.

Tcl был разработан с нуля, чтобы быть встроенным языком.

Я, как правило, делаю сотни тысяч, если не миллионы, итераций, в которых я вызываю внешних «агентов»,

Снижение производительности будет заметным, возможно, болезненным. Если вы можете помещать данные в массивы и обрабатывать их партиями, используя NumPy , это должно быть намного быстрее.

NumPy упрощает любую арифметику миллионы раз подряд. Например, возведение в квадрат каждого элемента массива выглядит так:

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

Супер легкий, и плотная внутренняя петля здесь фактически реализована в C.

Конечно, NumPy также может выполнять более сложные вычисления.

Я считаю, что tcl и Rexx были предназначены для этой цели.

Для миллионов вызовов (из я предполагаю, что c ++, потому что вы упомянули boost) в python, да: вы заметите удар производительности. Это может быть или не быть значительным – возможно, увеличение скорости поиска новых «агентов» будет больше, чем хита. У Python есть быстрые числовые библиотеки (например, numpy), которые могут помочь, но вы все равно понесете накладные расходы на сбор данных, вызов в python, gil и т. Д.

Да, вы можете встроить многие другие языки: проверить lua. Кроме того, проверьте swig.org, который может подключаться ко многим другим языкам, кроме python.

вы могли бы создать встроенный язык с использованием шаблонов C ++ и перегрузки операторов, см., например, языки ublas или ftensor matrix. я не думаю, что python или другие интерпретируемые языки подходят для обработки чисел / обработки данных.

  • Как сохранить IP-адрес в mySQL
  • Как я могу иметь переменные утверждения в Perl?
  • Как запустить скрипт perl с несколькими аргументами из php
  • Python имеет медленный db-запрос, но Perl не
  • Перевод Perl в Python
  • Зачем использовать Parrot (или другую VM), если у меня есть переводчик?
  • Как создавать списки автоматически создаются при использовании в Python, как в Perl?
  • Есть ли эквивалент Python для perl -pi -e`?
  • Python - лучший язык программирования в мире.