C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 读取200 MB的json文件需要1.5 GB的内存大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用C中的json_spirit库来解析一个200 MB的json文件.让我感到惊讶的是,当我在程序中读入内存时,会使用1.5 GB的RAm.在反序列化json时,这是预期的吗?

这是我在json文件中加载的方式:

std::ifstream istream(path.c_str());
 json_spirit::mValue val;
 json_spirit::read(istream,val);

解决方法

你可以尝试 rapidjson.

它针对内存使用和性能进行了优化.

通过使用insitu-parsing选项(即它更改解析的源字符串),每个JSON值只产生16个字节以将DOM存储在32位体系结构中.字符串值将使用指向修改后的源字符串的指针.

我希望内存使用量会少得多.

另一方面,rapidjson也支持SAX风格的解析.如果应用程序只需要从头到尾遍历JSON文件(例如,做一些统计),那么SAX风格的API将更快且内存消耗很少(程序堆栈最大字符串值长度).

大佬总结

以上是大佬教程为你收集整理的c – 读取200 MB的json文件需要1.5 GB的内存全部内容,希望文章能够帮你解决c – 读取200 MB的json文件需要1.5 GB的内存所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。