2013-05-25 3 views
6

Я обнаружил, что boost :: property_tree :: ptree имеет огромные издержки памяти. Моя оценка заключается в том, что пустой ptree составляет около 150 байт, и любая запись, помещенная в ptree, добавляет по меньшей мере еще 150 байт. Это делает его непригодным для использования для деревьев, содержащих тысячи записей.Что такое служебные данные памяти для boost :: property_tree :: ptree

Есть ли моя оценка? Есть ли способ удерживать верхний минимум?

ответ

1

Boost.PropertyTree в основном не быстро или легкий анализатор.
Он фокусируется на предоставлении удобства и функциональности на высоком уровне, поэтому он не построен, чтобы быть эффективным, я думаю.

Вы можете увидеть this thread в списке рассылки boost для аналогичного вопроса.

Я хотел бы предложить, что альтернатива Boost.PropertyTree может быть:

  • SAX парсер - это другой подход для XML разбора. Это похоже на парсер DOM; он анализирует XML-узлы один за другим. Обычно «распределение памяти для всего файла при запуске» происходит в парсере DOM, но это не происходит в синтаксических анализаторах SAX.
  • a распределитель-настраиваемый парсер + пользовательский пул памяти - вы можете настроить распределитель такого синтаксического анализа, чтобы указать стабильный пул памяти. Он может быть просто большим буфером предварительно выделенной памяти, пулом, поддерживающим фрагментацию, или даже файлом с отображением памяти и т. Д.
Смежные вопросы