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

sil*_*ngb 6 memory tree boost properties ptree

我发现boost :: property_tree :: ptree有很大的内存开销.我的估计是空的ptree大约是150个字节,并且放在ptree中的任何条目至少会增加150个字节.这使得我们无法使用包含数千个条目的树.

估计我的估计?有没有办法保持低开销?

sak*_*ki7 2

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

您可以在 boost 邮件列表上看到类似问题的帖子。

我建议 Boost.PropertyTree 的替代方案可能是:

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