[英]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.