Verwenden Sie einen benutzerdefinierten Verteiler mit boost :: bimap

  • Ich arbeite daran, die Leistung eines Programms zu verbessern, das sowohl die Boost-Grafikbibliothek als auch boost::bimap verwendet. Die Profilerstellung ergab, dass die meiste Zeit für die Speicherzuweisung und -freigabe aufgewendet wurde. Wenn Sie die Klasse adjacency_list der Graph-Bibliothek verwenden, wird durch boost::fast_pool_allocator die Leistung erheblich verbessert. Ein großer Teil der verbleibenden Speicherzuordnungen kommt in boost::bimap vor, daher wollte ich auch dort mit einem benutzerdefinierten Zuweiser experimentieren. Die Dokumentation sagt aus Sie können den Allokator als letzten Template-Parameter der Bimap angeben, er sagt jedoch nicht aus, welcher Typ das Template-Argument für den Allokator sein sollte. Beispielsweise für die Typen X und Y in

     boost::bimap<set_of<X>, set_of<Y>, boost::fast_pool_allocator<Z> >
     

    für < && 7&&]?

    24 September 2014
    Ryan Gabbard
1 answer
  • Ich glaube, die Antwort lautet: Für Z sollten Sie std::pair<X,Y> eingeben. Das hat in meinem Fall funktioniert, aber ich wollte hier posten, weil

    • aus der Dokumentation
    • Boost-Code nicht ersichtlich ist ist nicht schnell zu lesen
    • Googeln war nicht hilfreich
    • und andere Leute könnten nützliche Kommentare haben (z. B. habe ich nicht getestet, ob dies von der Art der linke oder rechte Ansicht der Bimap ist)
    22 November 2011
    Ryan Gabbard