4

我必须将很长的 JSON 文本解析为 JSON 对象。我尝试使用以下代码测量执行时间。

var t = process.hrtime()
JSON.parse(jsonStr);
t = process.hrtime(t);

它大约需要 0.5 毫秒,这相当多。由于 nodejs 的 V8 引擎是单线程的,如果这个操作如此繁重和频繁,吞吐量将受到很大影响。

因此,我打算在 C 中编写一个异步 JSON.parse 作为 NodeJS 原生插件,uv_queue_work用于让繁重的操作发生在另一个线程中,使用多核并避免占用 nodejs 主循环。

问题是,nodeJS 中的 V8 对象不允许从主线程以外的其他线程访问。

有什么方法可以解析文本并在另一个线程中创建 V8 对象,然后将新创建的 V8 对象复制到主线程中?

4

1 回答 1

1

有什么方法可以解析文本并在另一个线程中创建 V8 对象,然后将新创建的 V8 对象复制到主线程中?

没有好的方法可以做到这一点。

如果您想使用所有内核,最好使用cluster模块生成多个 node.js 进程,并让每个进程处理不同的请求。

于 2014-02-13T13:04:48.093 回答