用于类似mongodb的查询执行环境和多线程的Javascript引擎(或其他可嵌入语言)

用于类似mongodb的查询执行环境和多线程的Javascript引擎(或其他可嵌入语言),javascript,multithreading,thread-safety,v8,spidermonkey,Javascript,Multithreading,Thread Safety,V8,Spidermonkey,我需要一些嵌入式语言来完成类似mongodb中查询执行的任务。语言应该是快速的,它应该有JIT和解释器,用于JIT编译的频繁脚本和一次性运行的脚本,应该有内存运行时,我用特定的API函数或类填充,不管是手动的,没有内置的,比如gettime、线程生成或类似的,它应该有C API,它应该在ARM MIPS上工作也会很好,占用空间不太大也会很好,但这不是关键 我有两位候选人: 谷歌V8。 Spidermonkey有一个IonMonkey的手臂支撑。 我以前没有在C项目中嵌入语言的经验,所以我有几个问

我需要一些嵌入式语言来完成类似mongodb中查询执行的任务。语言应该是快速的,它应该有JIT和解释器,用于JIT编译的频繁脚本和一次性运行的脚本,应该有内存运行时,我用特定的API函数或类填充,不管是手动的,没有内置的,比如gettime、线程生成或类似的,它应该有C API,它应该在ARM MIPS上工作也会很好,占用空间不太大也会很好,但这不是关键

我有两位候选人:

谷歌V8。 Spidermonkey有一个IonMonkey的手臂支撑。 我以前没有在C项目中嵌入语言的经验,所以我有几个问题:最近有传言说V8不是线程安全的,这个问题仍然存在吗?如果是这样的话,缺乏线程安全性会导致什么问题


此外,如果有人建议使用除lua之外更适合我需求的嵌入式语言,我也会很高兴,我找不到与js相比的任何优势,除了在我不关心的方面占地面积更小。

我不确定SpiderMonkey的多线程可嵌入性与V8相比如何,但是我知道SpiderMonkey是有可能的——我们有一些多道程序嵌入程序,您可能想在上面发布后续问题

我们在浏览器中的web workers实现为每个worker使用一个运行时实例—您可以在单个进程中多次实例化运行时—在过去几年中,我们已经不再使用多线程安全的单运行时方法,因为这对web来说是不必要的,并且为引擎增加了大量复杂性

多道程序设计的另一种替代方法也是异步的、基于选择的、从运行到完成的la节点方法


一个缺点:我不认为你真的需要一个解释器——你的要求是一次性代码的快速启动时间。SpiderMonkey有一个解释器,而V8没有,但V8有一个快速的代码生成,我们倾向于称之为基线JIT编译器,它在该领域提供了相当的性能。一般来说,这种能力是JS在web上的一项重要要求:-

我不确定SpiderMonkey的多线程可嵌入性与V8相比如何,但我确实知道可以使用SpiderMonkey—我们有一些多道程序嵌入程序,您可能想在上面发布后续问题

我们在浏览器中的web workers实现为每个worker使用一个运行时实例—您可以在单个进程中多次实例化运行时—在过去几年中,我们已经不再使用多线程安全的单运行时方法,因为这对web来说是不必要的,并且为引擎增加了大量复杂性

多道程序设计的另一种替代方法也是异步的、基于选择的、从运行到完成的la节点方法


一个缺点:我不认为你真的需要一个解释器——你的要求是一次性代码的快速启动时间。SpiderMonkey有一个解释器,而V8没有,但V8有一个快速的代码生成,我们倾向于称之为基线JIT编译器,它在该领域提供了相当的性能。一般来说,这种能力是JS在web上的一项重要要求:-

多个运行时会导致严重的内存开销吗?不应该,因为我们的web workers就是这样实现的。不幸的是,我不确定每个worker使用了多少。多个运行时是否会导致严重的内存开销?不应该,因为我们的web worker就是这样实现的。不幸的是,我不确定每个工人到底用了多少。