Experiments with deque to see if it's more allocation friendly
This commit is contained in:
		
							parent
							
								
									41eb07e35b
								
							
						
					
					
						commit
						876a551cd8
					
				| @ -128,7 +128,7 @@ EdgeBasedGraphFactory::EdgeBasedGraphFactory(int nodes, std::vector<NodeBasedEdg | |||||||
|     INFO("Converted " << inputEdges.size() << " node-based edges into " << _nodeBasedGraph->GetNumberOfEdges() << " edge-based nodes."); |     INFO("Converted " << inputEdges.size() << " node-based edges into " << _nodeBasedGraph->GetNumberOfEdges() << " 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 == outputEdgeList.size(), "Vector passed to EdgeBasedGraphFactory::GetEdgeBasedEdges(..) is not empty"); | ||||||
|     GUARANTEE(0 != edgeBasedEdges.size(), "No edges in edge based graph"); |     GUARANTEE(0 != edgeBasedEdges.size(), "No edges in edge based graph"); | ||||||
| @ -195,7 +195,6 @@ void EdgeBasedGraphFactory::InsertEdgeBasedNode( | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void EdgeBasedGraphFactory::Run() { | void EdgeBasedGraphFactory::Run() { | ||||||
|     INFO("Generating edge based representation of input data"); |  | ||||||
| //    edgeBasedNodes.reserve(_nodeBasedGraph->GetNumberOfEdges());
 | //    edgeBasedNodes.reserve(_nodeBasedGraph->GetNumberOfEdges());
 | ||||||
|     Percent p(_nodeBasedGraph->GetNumberOfNodes()); |     Percent p(_nodeBasedGraph->GetNumberOfNodes()); | ||||||
|     int numberOfSkippedTurns(0); |     int numberOfSkippedTurns(0); | ||||||
| @ -253,8 +252,8 @@ void EdgeBasedGraphFactory::Run() { | |||||||
|                         //distance += heightPenalty;
 |                         //distance += heightPenalty;
 | ||||||
|                         //distance += ComputeTurnPenalty(u, v, w);
 |                         //distance += ComputeTurnPenalty(u, v, w);
 | ||||||
|                         assert(edgeData1.edgeBasedNodeID != edgeData2.edgeBasedNodeID); |                         assert(edgeData1.edgeBasedNodeID != edgeData2.edgeBasedNodeID); | ||||||
|                         if(edgeBasedEdges.size() == edgeBasedEdges.capacity()-3) | //                        if(edgeBasedEdges.size() == edgeBasedEdges.capacity()-3)
 | ||||||
|                             edgeBasedEdges.reserve(edgeBasedEdges.size()*1.1); | //                            edgeBasedEdges.reserve(edgeBasedEdges.size()*1.1);
 | ||||||
|                         if(originalEdgeData.size() == originalEdgeData.capacity()-3) |                         if(originalEdgeData.size() == originalEdgeData.capacity()-3) | ||||||
|                             originalEdgeData.reserve(originalEdgeData.size()*1.1); |                             originalEdgeData.reserve(originalEdgeData.size()*1.1); | ||||||
|                         OriginalEdgeData oed(v,edgeData2.nameID, turnInstruction); |                         OriginalEdgeData oed(v,edgeData2.nameID, turnInstruction); | ||||||
|  | |||||||
| @ -29,6 +29,7 @@ | |||||||
| #include <boost/property_tree/ptree.hpp> | #include <boost/property_tree/ptree.hpp> | ||||||
| #include <boost/property_tree/ini_parser.hpp> | #include <boost/property_tree/ini_parser.hpp> | ||||||
| 
 | 
 | ||||||
|  | #include <deque> | ||||||
| #include <vector> | #include <vector> | ||||||
| 
 | 
 | ||||||
| #include <cstdlib> | #include <cstdlib> | ||||||
| @ -103,7 +104,7 @@ private: | |||||||
|     RestrictionMap _restrictionMap; |     RestrictionMap _restrictionMap; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     std::vector<EdgeBasedEdge> edgeBasedEdges; |     std::deque<EdgeBasedEdge> edgeBasedEdges; | ||||||
|     std::vector<EdgeBasedNode> edgeBasedNodes; |     std::vector<EdgeBasedNode> edgeBasedNodes; | ||||||
|     std::vector<OriginalEdgeData> originalEdgeData; |     std::vector<OriginalEdgeData> originalEdgeData; | ||||||
|     std::vector<NodeInfo>       inputNodeInfoList; |     std::vector<NodeInfo>       inputNodeInfoList; | ||||||
| @ -127,7 +128,7 @@ public: | |||||||
|     explicit EdgeBasedGraphFactory(int nodes, std::vector<InputEdgeT> & inputEdges, std::vector<NodeID> & _bollardNodes, std::vector<NodeID> & trafficLights, std::vector<_Restriction> & inputRestrictions, std::vector<NodeInfo> & nI, boost::property_tree::ptree speedProfile, std::string & srtm); |     explicit EdgeBasedGraphFactory(int nodes, std::vector<InputEdgeT> & inputEdges, std::vector<NodeID> & _bollardNodes, std::vector<NodeID> & trafficLights, std::vector<_Restriction> & inputRestrictions, std::vector<NodeInfo> & nI, boost::property_tree::ptree speedProfile, std::string & srtm); | ||||||
| 
 | 
 | ||||||
|     void Run(); |     void Run(); | ||||||
|     void GetEdgeBasedEdges( std::vector< EdgeBasedEdge >& edges ); |     void GetEdgeBasedEdges( std::deque< EdgeBasedEdge >& edges ); | ||||||
|     void GetEdgeBasedNodes( std::vector< EdgeBasedNode> & nodes); |     void GetEdgeBasedNodes( std::vector< EdgeBasedNode> & nodes); | ||||||
|     void GetOriginalEdgeData( std::vector< OriginalEdgeData> & originalEdgeData); |     void GetOriginalEdgeData( std::vector< OriginalEdgeData> & originalEdgeData); | ||||||
|     short AnalyzeTurn(const NodeID u, const NodeID v, const NodeID w) const; |     short AnalyzeTurn(const NodeID u, const NodeID v, const NodeID w) const; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user