繁体   English   中英

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

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

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

在 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 分块到一个 resrved 向量中,看看性能是否有所提升。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM