我发现boost::property_tree::ptree有着巨大的内存开销。我的估计是一个空的ptree大约需要150字节,而且任何放入ptree中的条目都会至少再增加150字节。这使得对于包含数千个条目的树来说,它无法使用。我的估计是否准确?是否有办法保持开销较低?
Boost.PropertyTree基本上不是一个快速或轻量级的解析器。它专注于提供高层次的便利和功能,因此它并不是为了效率而构建的,我想。您可以在Boost邮件列表中查看类似问题的这个主题。我建议Boost.PropertyTree的替代方案可能是:- SAX解析器 - 这是XML解析的另一种方法。它类似于DOM解析器的相反;它逐个解析XML节点。通常,在DOM解析器中会发生“在开头为整个文件分配内存”的情况,但在SAX解析器中不会发生。 - 可自定义分配器的解析器 + 用户定义的内存池 - 您可以配置这种解析器的分配器以指向稳定的内存池。它可以简单地是预先分配的大型缓冲区、碎片感知池,甚至是内存映射文件等等...