我必须将非常长的JSON文本解析为JSON对象。 我试着用下面的代码测量执行时间。
var t = process.hrtime()
JSON.parse(jsonStr);
t = process.hrtime(t);
这需要大约0.5毫秒,这是相当多的。因为对于它的V8引擎,nodejs是单线程的,如果这个操作太重了,那么频繁,吞吐量会受到很大影响。
因此我计划在C中编写一个异步JSON.parse作为NodeJS本机插件,使用uv_queue_work
让繁重的操作发生在另一个线程中,使用多核并避免占用nodejs main循环。
问题是,不允许从主线程以外的其他线程访问nodeJS中的V8对象。
有没有办法解析文本并在另一个线程中创建V8对象,然后将新创建的V8对象复制到主线程中?
溴
答案 0 :(得分:1)
有没有办法解析文本并在另一个线程中创建V8对象,然后将新创建的V8对象复制到主线程中?
没有好办法。
如果要使用所有内核,最好使用cluster
模块生成多个node.js进程,并让每个进程处理不同的请求。