Механизм Javascript (или другой встраиваемый язык) для среды выполнения запросов, подобной mongodb, и многопоточности

Мне нужен встраиваемый язык для задач, подобных выполнению запросов в mongodb. Язык должен быть быстрым, и он должен иметь как JIT, так и интерпретатор (для частых сценариев, компилируемых JIT, а также для однократных сценариев), должен иметь среду выполнения в памяти, которую я заполняю определенными функциями API (или классами, что угодно) вручную (и ничего «встроенного», такого как gettime, порождение потока или подобное), он должен иметь C API и должен работать на ARM (MIPS также было бы неплохо), не слишком большой размер также был бы хорош (но это не критично).

У меня есть два кандидата:

  1. Гугл В8.
  2. Spidermonkey (на AFAIK было объявлено о поддержке IonMonkey ARM).

Раньше я не сталкивался со встраиванием языков в проекты C, поэтому у меня есть несколько вопросов: недавно ходили слухи, что V8 не является потокобезопасным, эта проблема все еще существует? Если да, то где это отсутствие потокобезопасности может вызвать проблемы?

Также я был бы рад, если бы кто-нибудь предложил встраиваемый язык, более подходящий для моих требований (кроме lua, я не могу найти никаких преимуществ по сравнению с js, кроме меньшего размера, на что мне все равно).


person gordon-quad    schedule 22.12.2011    source источник


Ответы (1)


Я не уверен, насколько многопоточность встраивания SpiderMonkey сравнивается с V8, но я знаю, что это возможно сделать с помощью SpiderMonkey — у нас есть несколько мультипрограммных встраивателей на dev.tech.js-engine, которому вы, возможно, захотите опубликовать дополнительные вопросы.

Наша реализация веб-воркеров в браузере использует один экземпляр среды выполнения для каждого работника (вы можете многократно создавать экземпляры среды выполнения в одном процессе). сети и существенно усложняет движок.

Альтернативой мультипрограммированию также является асинхронный, основанный на выборе, подход «выполнение до завершения» а-ля node.

Нит: Я не думаю, что интерпретатор действительно является требованием для вас — ваше требование — быстрое время запуска для одноразового кода. В SpiderMonkey есть интерпретатор, а в V8 — нет, но в V8 есть JIT-компилятор с быстрой отправкой кода (который мы обычно называем «базовым»), который обеспечивает сравнимую производительность в этой области. Эта возможность является важным требованием для JS в Интернете в целом. :-)

person cdleary    schedule 22.12.2011
comment
Вызывает ли несколько сред выполнения серьезные накладные расходы памяти? - person gordon-quad; 23.12.2011
comment
Этого не должно быть, поскольку именно так реализованы наши веб-воркеры. К сожалению, я не уверен, сколько именно используется на одного работника. - person cdleary; 05.01.2012