1

对于类似于 mongodb 中的查询执行的任务,我需要一些可嵌入的语言。语言应该很快,并且应该同时具有 JIT 和解释器(对于 JIT 编译的频繁脚本和一次性运行的脚本),应该具有我用特定 API 函数(或类,等等)填充的内存运行时手动(没有“内置”其他东西,如 gettime、线程生成或类似的),它应该有 C API,它应该在 ARM 上工作(MIPS 也很好),占用空间不要太大也很好(但这并不重要)。

我有两个候选人:

  1. 谷歌 V8。
  2. Spidermonkey(有 IonMonkey 的 ARM 支持宣布 AFAIK)。

我之前没有体验过将语言嵌入到 C 项目中,所以我有几个问题:最近有传言说 V8 不是线程安全的,这个问题还存在吗?如果是这样,缺乏线程安全会导致问题在哪里?

此外,如果有人建议更适合我的要求的嵌入式语言,我会很高兴(除了 lua,与 js 相比,我找不到任何优势,除了我不关心的占用空间更小)。

4

1 回答 1

1

我不确定 SpiderMonkey 的多线程嵌入能力与 V8 相比如何,但我确实知道 SpiderMonkey 是可能的——我们在dev.tech.js-engine上有一些多道程序嵌入器,您可能希望向其发布后续问题。

我们在浏览器中的 web worker 实现对每个 worker 使用一个运行时实例(您可以在单个进程中多次实例化运行时)——在过去几年中,我们已经远离了多线程安全的单一运行时方法,因为它对于网络,并为引擎增加了大量的复杂性。

多道程序的替代方案也是异步的、基于选择的、运行到完成的方法(一个节点)。

尼特:我不认为解释器真的是你的要求——你的要求是一次性代码的快速启动时间。SpiderMonkey 有一个解释器,而 V8 没有,但是 V8 有一个快速代码发射(我们倾向于称之为“基线”)JIT 编译器,它在该领域提供了相当的性能。这种能力通常是 Web 上 JS 的一个重要要求。:-)

于 2011-12-22T23:14:15.587 回答