Memory boost::property_tree::ptree的内存开销是多少

Memory boost::property_tree::ptree的内存开销是多少,memory,boost,properties,tree,ptree,Memory,Boost,Properties,Tree,Ptree,我发现boost::property_tree::ptree有巨大的内存开销。据我估计,一个空的ptree大约有150个字节,而放入ptree的任何条目至少会再增加150个字节。这使得我们无法使用包含数千个条目的树 我的估计错了吗?有什么方法可以降低开销吗?Boost.PropertyTree基本上不是一个快速或轻量级的解析器。 它专注于提供高层次的便利和功能,所以我想它不是为了高效而构建的 您可以在boost邮件列表中看到类似的问题 我建议Boost.PropertyTree的另一种选择可能是

我发现boost::property_tree::ptree有巨大的内存开销。据我估计,一个空的ptree大约有150个字节,而放入ptree的任何条目至少会再增加150个字节。这使得我们无法使用包含数千个条目的树


我的估计错了吗?有什么方法可以降低开销吗?

Boost.PropertyTree基本上不是一个快速或轻量级的解析器。
它专注于提供高层次的便利和功能,所以我想它不是为了高效而构建的

您可以在boost邮件列表中看到类似的问题

我建议Boost.PropertyTree的另一种选择可能是:

  • SAX解析器——这是XML解析的另一种方法。它就像DOM解析器的反面;它逐个解析XML节点。通常,“一次为整个文件分配内存”发生在DOM解析器中,但不会发生在SAX解析器中
  • 分配器可定制的解析器+用户定义的内存池——您可以配置此类解析器的分配器以指向稳定内存池。它可能只是一个预分配内存的大缓冲区、一个碎片感知池,甚至是一个内存映射文件,等等