From 876a551cd8bad6364bfc4be8b20d0a8e26e1078b Mon Sep 17 00:00:00 2001 From: DennisOSRM Date: Wed, 25 Apr 2012 17:11:14 +0200 Subject: [PATCH] Experiments with deque to see if it's more allocation friendly --- Contractor/EdgeBasedGraphFactory.cpp | 7 +++---- Contractor/EdgeBasedGraphFactory.h | 5 +++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Contractor/EdgeBasedGraphFactory.cpp b/Contractor/EdgeBasedGraphFactory.cpp index 77b377e8d..4367bb94e 100644 --- a/Contractor/EdgeBasedGraphFactory.cpp +++ b/Contractor/EdgeBasedGraphFactory.cpp @@ -128,7 +128,7 @@ EdgeBasedGraphFactory::EdgeBasedGraphFactory(int nodes, std::vectorGetNumberOfEdges() << " edge-based nodes."); } -void EdgeBasedGraphFactory::GetEdgeBasedEdges( std::vector< EdgeBasedEdge >& outputEdgeList ) { +void EdgeBasedGraphFactory::GetEdgeBasedEdges( std::deque< EdgeBasedEdge >& outputEdgeList ) { GUARANTEE(0 == outputEdgeList.size(), "Vector passed to EdgeBasedGraphFactory::GetEdgeBasedEdges(..) is not empty"); GUARANTEE(0 != edgeBasedEdges.size(), "No edges in edge based graph"); @@ -195,7 +195,6 @@ void EdgeBasedGraphFactory::InsertEdgeBasedNode( } void EdgeBasedGraphFactory::Run() { - INFO("Generating edge based representation of input data"); // edgeBasedNodes.reserve(_nodeBasedGraph->GetNumberOfEdges()); Percent p(_nodeBasedGraph->GetNumberOfNodes()); int numberOfSkippedTurns(0); @@ -253,8 +252,8 @@ void EdgeBasedGraphFactory::Run() { //distance += heightPenalty; //distance += ComputeTurnPenalty(u, v, w); assert(edgeData1.edgeBasedNodeID != edgeData2.edgeBasedNodeID); - if(edgeBasedEdges.size() == edgeBasedEdges.capacity()-3) - edgeBasedEdges.reserve(edgeBasedEdges.size()*1.1); +// if(edgeBasedEdges.size() == edgeBasedEdges.capacity()-3) +// edgeBasedEdges.reserve(edgeBasedEdges.size()*1.1); if(originalEdgeData.size() == originalEdgeData.capacity()-3) originalEdgeData.reserve(originalEdgeData.size()*1.1); OriginalEdgeData oed(v,edgeData2.nameID, turnInstruction); diff --git a/Contractor/EdgeBasedGraphFactory.h b/Contractor/EdgeBasedGraphFactory.h index 74d4929a0..4d8506038 100644 --- a/Contractor/EdgeBasedGraphFactory.h +++ b/Contractor/EdgeBasedGraphFactory.h @@ -29,6 +29,7 @@ #include #include +#include #include #include @@ -103,7 +104,7 @@ private: RestrictionMap _restrictionMap; - std::vector edgeBasedEdges; + std::deque edgeBasedEdges; std::vector edgeBasedNodes; std::vector originalEdgeData; std::vector inputNodeInfoList; @@ -127,7 +128,7 @@ public: explicit EdgeBasedGraphFactory(int nodes, std::vector & inputEdges, std::vector & _bollardNodes, std::vector & trafficLights, std::vector<_Restriction> & inputRestrictions, std::vector & nI, boost::property_tree::ptree speedProfile, std::string & srtm); void Run(); - void GetEdgeBasedEdges( std::vector< EdgeBasedEdge >& edges ); + void GetEdgeBasedEdges( std::deque< EdgeBasedEdge >& edges ); void GetEdgeBasedNodes( std::vector< EdgeBasedNode> & nodes); void GetOriginalEdgeData( std::vector< OriginalEdgeData> & originalEdgeData); short AnalyzeTurn(const NodeID u, const NodeID v, const NodeID w) const;