我知道NodeJS是建立在V8之上的,这就是为什么当我的C++封装器绕过V8解析2MB大小的JSON文件时需要394秒,而NodeJS脚本只需要167秒。在C ++中,我使用以下方式调用解析JSON:
v8::MaybeLocal<v8::Value> jsonData = v8::JSON::Parse(isolate, v8::String::NewFromUtf8(isolate, data));
而在NodeJS中则使用 JSON.parse(data)。
此外,如果像这样在循环中调用 v8::JSON::Parse,则性能会更加下降。
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));
}
我的内存被it技术全部占用了,而且OOM killer还杀死了我的应用程序。为什么会出现这种情况?可能是因为该函数包含了内存泄漏或者我需要释放一些东西。
非常感谢!
v8::HandleScope scope(isolate); v8::MaybeLocal jsonData = v8::JSON::Parse(context, v8::String::NewFromUtf8(isolate, data));
} - Eduard Bondarenko