Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取200 mb json文件需要1.5 gb内存 我使用C++中的JSONSyValk库解析200 MB JSON文件。令我惊讶的是,当我在程序中读入内存时,我的RAM中有1.5 gb被使用。这是反序列化json时所期望的吗_C++_Json - Fatal编程技术网

读取200 mb json文件需要1.5 gb内存 我使用C++中的JSONSyValk库解析200 MB JSON文件。令我惊讶的是,当我在程序中读入内存时,我的RAM中有1.5 gb被使用。这是反序列化json时所期望的吗

读取200 mb json文件需要1.5 gb内存 我使用C++中的JSONSyValk库解析200 MB JSON文件。令我惊讶的是,当我在程序中读入内存时,我的RAM中有1.5 gb被使用。这是反序列化json时所期望的吗,c++,json,C++,Json,下面是我如何加载json文件: std::ifstream istream(path.c_str()); json_spirit::mValue val; json_spirit::read(istream, val); 我认为,这并不依赖于JSON。这更多的是数据结构开销的问题。如果您有许多小对象,那么管理部分将变得越来越重要 虽然,超过七倍的开销似乎真的太多了。您可以试试 它针对内存使用和性能进行了优化 通过使用原位解析选项(即,它更改解析的源字符串),每个JSON值只需要16个字节

下面是我如何加载json文件:

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

我认为,这并不依赖于JSON。这更多的是数据结构开销的问题。如果您有许多小对象,那么管理部分将变得越来越重要

虽然,超过七倍的开销似乎真的太多了。

您可以试试

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

通过使用原位解析选项(即,它更改解析的源字符串),每个JSON值只需要16个字节就可以在32位体系结构中存储DOM。字符串值将使用指向修改后的源字符串的指针

我希望内存使用会少很多


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

我建议您向
JSON\u spirit
维护人员提出这个问题,他们可能知道(并提供建议/解决方法)或者他们可能欢迎反馈并调查根本原因。无论如何,你肯定不会有任何损失。