2013-05-25 8 views
6

Znalazłem, że boost :: property_tree :: ptree ma ogromne obciążenie pamięci. Mój szacunek jest taki, że puste ptree ma około 150 bajtów, a każdy wpis umieszczony w ptree dodaje co najmniej kolejne 150 bajtów. Dzięki temu nie nadaje się do użytku dla drzew zawierających tysiące wpisów.jakie jest obciążenie pamięci dla boost :: property_tree :: ptree

Czy moja ocena jest wyłączona? Czy jest jakiś sposób, aby utrzymać niskie koszty ogólne?

Odpowiedz

1

Boost.PropertyTree nie jest w zasadzie szybko lub lekki parser.
Koncentruje się na zapewnieniu wygody i funkcjonalności na wysokim poziomie, więc nie jest tak zbudowany, aby był wydajny, jak sądzę.

Możesz zobaczyć this thread na liście mailingowej dla podobnego pytania.

sugeruję, że alternatywą Boost.PropertyTree może być:

  • parser SAX - to inne podejście do analizowania XML. Jest to przeciwieństwo parsera DOM; parsuje węzły XML jeden po drugim. Zwykle "alokacja pamięci dla całego pliku na początku" występuje w parserze DOM, ale nie będzie występować w parserach SAX.
  • podzielnik konfigurowalny parser + zdefiniowane przez użytkownika basen pamięć - można skonfigurować przydzielania takiego parsera wskazać stabilnej puli pamięci. Może to być po prostu duży bufor wstępnie przydzielonej pamięci, puli uwzględniającej fragmentację, a nawet pliku odwzorowanego w pamięci itd.
Powiązane problemy