为什么v8::JSON::Parse比NodeJS的JSON::Parse慢得多?

Why v8::JSON::Parse from v8 much slower than NodeJS JSON::parse?

本文关键字:Parse JSON v8 为什么 NodeJS      更新时间:2023-09-26

我知道NodeJS是建立在V8之上的。这就是为什么它看起来如此奇怪,当我的c++包装围绕v8解析json文件(2 Mb)在394秒和NodeJS脚本解析相同的json文件在167秒。

在c++中,我这样调用parse json

v8::MaybeLocal<v8::Value> jsonData = v8::JSON::Parse(isolate, v8::String::NewFromUtf8(isolate, data));

和NodeJS中的JSON.parse(data)

当我在这样的循环中调用v8::JSON::Parse

for (int i = 0; i < 1000; i++) {
  v8::JSON::Parse(isolate, v8::String::NewFromUtf8(isolate, data));
}

它消耗了我所有的内存,OOM杀手杀死了我的应用程序。为什么它会这样工作?也许这个函数包含内存泄漏,或者我需要释放一些东西。

多谢!

我只打赌在纯v8使用中,从' json::parse'返回的json立即被销毁,而在node.js中,它要么异步收集垃圾,要么在循环外。尝试将返回的json块放在一个保留的向量中,看看性能是否会提高。