Boost: Memory Pool



  • Ich hab eine Baum-Datenstruktur und wollte fragen, ob eventuell der Einsatz des Boost-Memory-Pools sinnvoll sein könnte. Bisher habe ich immer "new" verwendet, um neue Knoten zu erstellen.

    Für den Einsatz eines Pools spricht, dass keine Baumknoten gelöscht werden (wenn überhaupt, wird der ganze Baum gelöscht). Hinzu kommt, dass die Baumknoten recht wenig Nutzdaten tragen (jeder Knoten hat drei Zeiger auf weitere Baumknoten und etwa 12 Byte Nutzdaten).

    Speichereffizienz ist mir wichtiger als Laufzeiteffizienz. (Ich hab keine Ahnung, wie groß der Overhead vom Betriebssystem beim Benutzen von new ist)

    Wenn ihr meint, dass ein Pool sinnvoll ist, stellt sich die Frage, wie ich den Pool verwende:
    Welche der Pool-Klassen von Boost ist für mich die Richtige?
    Wodurch muss ich new und delete ersetzen?
    Gibt es sonst noch was zu beachten?

    Aus der Doku werde ich auf Anhieb nicht so richtig schlau.



  • Wenn keine Knoten gelöscht werden, brauchst du keinen Pool, dann kannst du ganz einfach eine Arena verwenden.

    Du nimmst einfach deque<node> und statt new machst du emplace_back.



  • danke, auf die einfachsten Ideen kommt man manchmal nicht^^


Log in to reply