为什么v8::JSON::Parse比NodeJS的JSON::Parse慢得多?
Why v8::JSON::Parse from v8 much slower than NodeJS JSON::parse?
我知道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块放在一个保留的向量中,看看性能是否会提高。
相关文章:
- 在c++中使用nlohmann从类到json的转换
- C++json插入数组
- nlohmann-json将一个数组插入到另一个数组中
- 如何使用curlpp通过POST方法上传文件和json数据
- JSON转换为nlohmann JSON-lib中的结构数组
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 在nlohmann json中,如何将嵌套对象的数组转换为嵌套结构的向量
- 如何在 nlohmann 的 json 库中获取数组长度?
- UE4 C++ 我无法将 JSON 嵌套值获取到 TArray
- 如何在特定位置追加 json 文件
- 有没有办法让编译器在我放置字符串而不是 nlohmann::json 对象时抛出错误?
- 使用 jsoncpp 解析 json 数组字符串
- 将 FlatBuffer 对象序列化为 JSON,而不使用其架构文件
- 如何在 c++ 非托管代码中反序列化 byte[] 的 json 字符串?
- 使用 cmake 生成 compile_commands.json
- 如何使用 c++ 和提升库生成 json
- 使用 minijson-reader 库读取 JSON 字符串时出现问题
- 使用 Qt 解析 JSON 数组
- 为什么v8::JSON::Parse比NodeJS的JSON::Parse慢得多?
- read & parse POST JSON with fastcgi++ & json-spirit