从json文件构造boost属性树的性能非常不好?

lim*_*imi 5 c++ json boost boost-propertytree

我正在使用boost属性树来加载/转储json文件。但是,性能非常差。

例如,我有一个大小为1.8M的json文件。boost C ++程序花费3秒来加载json文件并构建属性树。如果我使用python加载json文件,则只需0.1秒。python也将所有东西都构造为对象。

C ++程序类似于:

int main(int argc, char **argv){
        std::fstream fin;
        fin.open(argv[1], std::fstream::in);
        if (!fin.is_open()){
            ASSERT(false);
        }

        boost::property_tree::ptree pt;
        try{
            read_json(fin, pt);
        }catch(ptree_error & e) {
            ASSERT(false);
        }
        fin.close();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

做同样事情的python脚本是这样的:

#!/usr/bin//python

import sys
import json

fp = open(sys.argv[1],"r")
objs = json.load(fp)
Run Code Online (Sandbox Code Playgroud)

我尝试了最新的提升(1.54)。这样做仍然很慢。

感谢任何建议。

如果没有解决方案,您是否知道其他C ++库来加载/转储json?

lim*_*imi 0

JSON 文件中的实际内容并不重要。我尝试了多个具有不同内容的 JSON 文件。只是提升速度很慢。

现在我已经改用 jansson,它更好 - 快速且使用良好的 API。